diff --git a/404.html b/404.html index 0b589ee..1a59c9d 100644 --- a/404.html +++ b/404.html @@ -1,13 +1,10 @@ -404 Page not found · SRE MUC - - +404 Page not found · SRE MUC + -
Skip to main content
SRE MUC -SRE MUC
- -

Page Not Found 😕

Error 404

It seems that the page you've requested does not exist.

\ No newline at end of file +
Skip to main content

Page Not Found 😕

Error 404

It seems that the page you've requested does not exist.

\ No newline at end of file diff --git a/authors/index.html b/authors/index.html index 8ad5a22..0a52c81 100644 --- a/authors/index.html +++ b/authors/index.html @@ -1,13 +1,10 @@ -Authors · SRE MUC - - +Authors · SRE MUC + -
Skip to main content
SRE MUC -SRE MUC
- -

Authors

\ No newline at end of file +
Skip to main content

Authors

\ No newline at end of file diff --git a/categories/index.html b/categories/index.html index 24858eb..9f3c185 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1,13 +1,10 @@ -Categories · SRE MUC - - +Categories · SRE MUC + -
Skip to main content
SRE MUC -SRE MUC
- -

Categories

\ No newline at end of file +
Skip to main content

Categories

\ No newline at end of file diff --git a/css/main.bundle.min.85f006de1806b55b2d082d1122deedd8cec6fdc1f7c8a51be975a4496165d6c798f4a3de52545a6a87cc4bc09fc2d6f5201d44ea57acc1ac2b1c42a688c62bee.css b/css/main.bundle.min.85f006de1806b55b2d082d1122deedd8cec6fdc1f7c8a51be975a4496165d6c798f4a3de52545a6a87cc4bc09fc2d6f5201d44ea57acc1ac2b1c42a688c62bee.css new file mode 100644 index 0000000..f8831ed --- /dev/null +++ b/css/main.bundle.min.85f006de1806b55b2d082d1122deedd8cec6fdc1f7c8a51be975a4496165d6c798f4a3de52545a6a87cc4bc09fc2d6f5201d44ea57acc1ac2b1c42a688c62bee.css @@ -0,0 +1 @@ +:root{--color-neutral:255, 255, 255;--color-neutral-50:248, 250, 252;--color-neutral-100:241, 245, 249;--color-neutral-200:226, 232, 240;--color-neutral-300:203, 213, 225;--color-neutral-400:148, 163, 184;--color-neutral-500:100, 116, 139;--color-neutral-600:71, 85, 105;--color-neutral-700:51, 65, 85;--color-neutral-800:30, 41, 59;--color-neutral-900:15, 23, 42;--color-primary-50:239, 246, 255;--color-primary-100:219, 234, 254;--color-primary-200:191, 219, 254;--color-primary-300:147, 197, 253;--color-primary-400:96, 165, 250;--color-primary-500:59, 130, 246;--color-primary-600:37, 99, 235;--color-primary-700:29, 78, 216;--color-primary-800:30, 64, 175;--color-primary-900:30, 58, 138;--color-secondary-50:236, 254, 255;--color-secondary-100:207, 250, 254;--color-secondary-200:165, 243, 252;--color-secondary-300:103, 232, 249;--color-secondary-400:34, 211, 238;--color-secondary-500:6, 182, 212;--color-secondary-600:8, 145, 178;--color-secondary-700:14, 116, 144;--color-secondary-800:21, 94, 117;--color-secondary-900:22, 78, 99}/*!Blowfish | MIT License | https://github.com/nunocoracao/blowfish*/#zen-mode-button{cursor:pointer}.zen-mode{position:relative}body.zen-mode-enable{ #bmc-wbtn, .author { display:none !important; }}/*!tailwindcss v3.4.4 | MIT License | https://tailwindcss.com*/*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:initial}::before,::after{--tw-content:''}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding-top:.5rem;padding-right:.75rem;padding-bottom:.5rem;padding-left:.75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media(forced-colors:active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media(forced-colors:active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media(forced-colors:active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}@supports(-moz-appearance:none){*{scrollbar-color:initial;scrollbar-width:initial}}*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:853px){.container{max-width:853px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:none;font-weight:500;text-decoration-color:rgba(var(--color-primary-300),1)}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)):hover{color:rgba(var(--color-primary-600),1);text-decoration:none;border-radius:.09rem}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=As]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=as]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=Is]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=is]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:600;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px rgb(var(--tw-prose-kbd-shadows)/10%);font-size:.9rem;border-radius:.25rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em;background-color:rgba(var(--color-neutral-200),1);padding:.1rem .4rem}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em;background-color:rgba(var(--color-neutral-50),1);padding-top:3px;padding-bottom:3px;padding-left:5px;padding-right:5px;border-radius:.25rem}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:"`";display:none}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:"`";display:none}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code)}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;text-align:start;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:rgba(var(--color-neutral-700), 1);--tw-prose-headings:rgba(var(--color-neutral-800), 1);--tw-prose-lead:rgba(var(--color-neutral-500), 1);--tw-prose-links:rgba(var(--color-primary-600), 1);--tw-prose-bold:rgba(var(--color-neutral-900), 1);--tw-prose-counters:rgba(var(--color-neutral-800), 1);--tw-prose-bullets:rgba(var(--color-neutral-500), 1);--tw-prose-hr:rgba(var(--color-neutral-200), 1);--tw-prose-quotes:rgba(var(--color-neutral-700), 1);--tw-prose-quote-borders:rgba(var(--color-primary-200), 1);--tw-prose-captions:rgba(var(--color-neutral-500), 1);--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:rgba(var(--color-secondary-700), 1);--tw-prose-pre-code:rgba(var(--color-neutral-700), 1);--tw-prose-pre-bg:rgba(var(--color-neutral-50), 1);--tw-prose-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-td-borders:rgba(var(--color-neutral-300), 1);--tw-prose-invert-body:rgba(var(--color-neutral-300), 1);--tw-prose-invert-headings:rgba(var(--color-neutral-50), 1);--tw-prose-invert-lead:rgba(var(--color-neutral-500), 1);--tw-prose-invert-links:rgba(var(--color-primary-400), 1);--tw-prose-invert-bold:rgba(var(--color-neutral), 1);--tw-prose-invert-counters:rgba(var(--color-neutral-400), 1);--tw-prose-invert-bullets:rgba(var(--color-neutral-600), 1);--tw-prose-invert-hr:rgba(var(--color-neutral-500), 1);--tw-prose-invert-quotes:rgba(var(--color-neutral-200), 1);--tw-prose-invert-quote-borders:rgba(var(--color-primary-900), 1);--tw-prose-invert-captions:rgba(var(--color-neutral-400), 1);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:rgba(var(--color-secondary-400), 1);--tw-prose-invert-pre-code:rgba(var(--color-neutral-200), 1);--tw-prose-invert-pre-bg:rgba(var(--color-neutral-700), 1);--tw-prose-invert-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-invert-td-borders:rgba(var(--color-neutral-700), 1);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose :where(mark):not(:where([class~=not-prose],[class~=not-prose] *)){color:rgba(var(--color-neutral-800),1);background-color:rgba(var(--color-primary-600),1);padding:.1rem .2rem;border-radius:.25rem}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *))::before{display:none}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *))::after{display:none}.prose :where(a.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-600),1)}.prose :where(p.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-600),1)}.prose-invert{--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.prose-invert :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-neutral-600),1)}.prose-invert :where(a):not(:where([class~=not-prose],[class~=not-prose] *)):hover{color:rgba(var(--color-primary-400),1)}.prose-invert :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:rgba(var(--color-neutral-200),1);background-color:rgba(var(--color-neutral-700),1)}.prose-invert :where(mark):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:rgba(var(--color-primary-400),1)}.prose-invert :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:rgba(var(--color-neutral-700),1)}.prose-invert :where(a.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-400),1)}.prose-invert :where(p.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-400),1)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.\!absolute{position:absolute!important}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.top-20{top:5rem}.top-\[110vh\]{top:110vh}.top-\[calc\(100vh-5\.5rem\)\]{top:calc(100vh - 5.5rem)}.z-10{z-index:10}.z-30{z-index:30}.z-\[1040\]{z-index:1040}.z-\[1070\]{z-index:1070}.z-\[1080\]{z-index:1080}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[999\]{z-index:999}.order-first{order:-9999}.float-left{float:left}.\!-m-px{margin:-1px!important}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-auto{margin:auto}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-\[15\%\]{margin-left:15%;margin-right:15%}.mx-\[3px\]{margin-left:3px;margin-right:3px}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-3{margin-top:.75rem;margin-bottom:.75rem}.\!mb-0{margin-bottom:0!important}.\!mb-9{margin-bottom:2.25rem!important}.\!mt-0{margin-top:0!important}.-mb-1{margin-bottom:-.25rem}.-ml-12{margin-left:-3rem}.-mr-2{margin-right:-.5rem}.-mr-48{margin-right:-12rem}.-mr-\[100\%\]{margin-right:-100%}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-\[2px\]{margin-bottom:2px}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-5{margin-right:1.25rem}.mr-auto{margin-right:auto}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[-2px\]{margin-top:-2px}.mt-\[0\.1rem\]{margin-top:.1rem}.box-border{box-sizing:border-box}.box-content{box-sizing:content-box}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.\!h-px{height:1px!important}.h-0{height:0}.h-1\/2{height:50%}.h-12{height:3rem}.h-24{height:6rem}.h-3{height:.75rem}.h-36{height:9rem}.h-48{height:12rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-\[1000px\]{height:1000px}.h-\[150px\]{height:150px}.h-\[3px\]{height:3px}.h-\[800px\]{height:800px}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-3{max-height:.75rem}.max-h-\[5rem\]{max-height:5rem}.min-h-0{min-height:0}.min-h-\[130px\]{min-height:130px}.min-h-\[148px\]{min-height:148px}.min-h-full{min-height:100%}.\!w-px{width:1px!important}.w-0{width:0}.w-12{width:3rem}.w-2{width:.5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-36{width:9rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-\[15\%\]{width:15%}.w-\[30px\]{width:30px}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[1\.8rem\]{min-width:1.8rem}.min-w-\[220px\]{min-width:220px}.min-w-\[30px\]{min-width:30px}.min-w-full{min-width:100%}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-\[1600px\]{max-width:1600px}.max-w-\[200px\]{max-width:200px}.max-w-\[267px\]{max-width:267px}.max-w-\[5rem\]{max-width:5rem}.max-w-\[64rem\]{max-width:64rem}.max-w-\[calc\(100\%-1rem\)\]{max-width:calc(100% - 1rem)}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-prose{max-width:65ch}.max-w-xl{max-width:36rem}.flex-1{flex:1}.flex-auto{flex:auto}.flex-initial{flex:initial}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-auto{flex-basis:auto}.-translate-x-full{--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.-translate-y-8{--tw-translate-y:-2rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.scale-0{--tw-scale-x:0;--tw-scale-y:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.scale-\[1\.02\]{--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.transform-none{transform:none}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1)infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.touch-pan-y{--tw-pan-y:pan-y;touch-action:var(--tw-pan-x)var(--tw-pan-y)var(--tw-pinch-zoom)}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.place-self-center{place-self:center}.self-center{align-self:center}.overflow-auto{overflow:auto}.\!overflow-hidden{overflow:hidden!important}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-scroll{overflow-y:scroll}.overscroll-contain{overscroll-behavior:contain}.scroll-smooth{scroll-behavior:smooth}.whitespace-normal{white-space:normal}.\!whitespace-nowrap{white-space:nowrap!important}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.\!rounded-md{border-radius:.375rem!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[50\%\]{border-radius:50%}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-e-\[0\.25rem\]{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-s-\[0\.25rem\]{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.\!border-0{border-width:0!important}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-y-\[10px\]{border-top-width:10px;border-bottom-width:10px}.border-b-2{border-bottom-width:2px}.border-e-0{border-inline-end-width:0}.border-l-2{border-left-width:2px}.border-s-0{border-inline-start-width:0}.border-s-\[0\.125rem\]{border-inline-start-width:.125rem}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-dotted{border-style:dotted}.border-neutral-100{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-100),var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-200),var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-300),var(--tw-border-opacity))}.border-primary-400{--tw-border-opacity:1;border-color:rgba(var(--color-primary-400),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--color-primary-500),var(--tw-border-opacity))}.border-secondary-500{--tw-border-opacity:1;border-color:rgba(var(--color-secondary-500),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[\#6d6d6d\]{--tw-bg-opacity:1;background-color:rgb(109 109 109/var(--tw-bg-opacity))}.bg-neutral{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral),var(--tw-bg-opacity))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-100),var(--tw-bg-opacity))}.bg-neutral-100\/50{background-color:rgba(var(--color-neutral-100),.5)}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-300),var(--tw-bg-opacity))}.bg-neutral-500\/50{background-color:rgba(var(--color-neutral-500),.5)}.bg-neutral\/50{background-color:rgba(var(--color-neutral),.5)}.bg-primary-100{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.bg-primary-200{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-200),var(--tw-bg-opacity))}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.bg-none{background-image:none}.from-neutral{--tw-gradient-from:rgba(var(--color-neutral), 1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(var(--color-neutral), 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary-500{--tw-gradient-from:rgba(var(--color-primary-500), 1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(var(--color-primary-500), 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-60\%{--tw-gradient-from-position:60%}.to-neutral{--tw-gradient-to:rgba(var(--color-neutral), 1) var(--tw-gradient-to-position)}.to-neutral-100{--tw-gradient-to:rgba(var(--color-neutral-100), 1) var(--tw-gradient-to-position)}.to-secondary-600{--tw-gradient-to:rgba(var(--color-secondary-600), 1) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.bg-clip-padding{background-clip:padding-box}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-left{-o-object-position:left;object-position:left}.\!p-0{padding:0!important}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[0\.4rem\]{padding-left:.4rem;padding-right:.4rem}.px-\[30px\]{padding-left:30px;padding-right:30px}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[0\.4rem\]{padding-top:.4rem;padding-bottom:.4rem}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-32{padding-bottom:8rem}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pl-\[24px\]{padding-left:24px}.pr-\[24px\]{padding-right:24px}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.-indent-\[999px\]{text-indent:-999px}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.6rem\]{font-size:.6rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.leading-3{line-height:.75rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-\[1\.6\]{line-height:1.6}.tracking-normal{letter-spacing:0}.\!text-neutral{--tw-text-opacity:1 !important;color:rgba(var(--color-neutral),var(--tw-text-opacity))!important}.text-neutral-200{--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.text-neutral-300{--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.text-neutral-50{--tw-text-opacity:1;color:rgba(var(--color-neutral-50),var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgba(var(--color-neutral-900),var(--tw-text-opacity))}.text-primary-100{--tw-text-opacity:1;color:rgba(var(--color-primary-100),var(--tw-text-opacity))}.text-primary-300{--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.text-primary-700{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.text-primary-800{--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}.text-transparent{color:transparent}.\!no-underline{text-decoration-line:none!important}.no-underline{text-decoration-line:none}.decoration-neutral-300{text-decoration-color:rgba(var(--color-neutral-300),1)}.decoration-primary-500{text-decoration-color:rgba(var(--color-primary-500),1)}.underline-offset-auto{text-underline-offset:auto}.\!opacity-0{opacity:0!important}.\!opacity-100{opacity:1!important}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.mix-blend-normal{mix-blend-mode:normal}.mix-blend-multiply{mix-blend-mode:multiply}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgb(0 0 0 / 0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.transition-\[height\]{transition-property:height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-\[transform\2c _opacity\]{transition-property:transform,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.duration-150{transition-duration:150ms}.duration-200{transition-duration:200ms}.duration-300{transition-duration:300ms}.duration-\[350ms\]{transition-duration:350ms}.duration-\[600ms\]{transition-duration:600ms}.ease-\[cubic-bezier\(0\2c 0\2c 0\.15\2c 1\)\2c _cubic-bezier\(0\2c 0\2c 0\.15\2c 1\)\]{transition-timing-function:cubic-bezier(0,0,.15,1),cubic-bezier(0,0,.15,1)}.ease-\[cubic-bezier\(0\.25\2c 0\.1\2c 0\.25\2c 1\.0\)\]{transition-timing-function:cubic-bezier(.25,.1,.25,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.scrollbar-thin::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar-thin::-webkit-scrollbar-track:hover{background-color:var(--scrollbar-track-hover,var(--scrollbar-track))}.scrollbar-thin::-webkit-scrollbar-track:active{background-color:var(--scrollbar-track-active,var(--scrollbar-track-hover,var(--scrollbar-track)))}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover,var(--scrollbar-thumb))}.scrollbar-thin::-webkit-scrollbar-thumb:active{background-color:var(--scrollbar-thumb-active,var(--scrollbar-thumb-hover,var(--scrollbar-thumb)))}.scrollbar-thin::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar-thin::-webkit-scrollbar-corner:hover{background-color:var(--scrollbar-corner-hover,var(--scrollbar-corner))}.scrollbar-thin::-webkit-scrollbar-corner:active{background-color:var(--scrollbar-corner-active,var(--scrollbar-corner-hover,var(--scrollbar-corner)))}@supports(-moz-appearance:none){.scrollbar-thin{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}}.scrollbar-thin::-webkit-scrollbar{display:block;width:8px;height:8px}.scrollbar-track-neutral-200{--scrollbar-track:rgba(var(--color-neutral-200), 1) !important}.scrollbar-thumb-neutral-400{--scrollbar-thumb:rgba(var(--color-neutral-400), 1) !important}.\!\[clip\:rect\(0\2c 0\2c 0\2c 0\)\]{clip:rect(0,0,0,0)!important}body a,body button{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.icon svg{height:1em;width:1em}#search-query::-webkit-search-cancel-button,#search-query::-webkit-search-decoration,#search-query::-webkit-search-results-button,#search-query::-webkit-search-results-decoration{display:none}body:has(#menu-controller:checked){overflow-y:hidden}#menu-button:has(#menu-controller:checked){visibility:hidden}#menu-controller:checked~#menu-wrapper{visibility:visible;opacity:1}.prose blockquote:where([dir=rtl],[dir=rtl] *){border-left-width:0;border-right-width:4px;padding-right:1rem}.prose ul>li:where([dir=rtl],[dir=rtl] *),.prose ol>li:where([dir=rtl],[dir=rtl] *){margin-right:1.75rem;padding-left:0;padding-right:.5rem}.prose ol>li:where([dir=rtl],[dir=rtl] *):before,.prose ul>li:where([dir=rtl],[dir=rtl] *):before{left:auto;right:.25rem}.prose thead td:first-child:where([dir=rtl],[dir=rtl] *),.prose thead th:first-child:where([dir=rtl],[dir=rtl] *){padding-right:0}.prose thead td:last-child:where([dir=rtl],[dir=rtl] *),.prose thead th:last-child:where([dir=rtl],[dir=rtl] *){padding-left:0}.prose div.min-w-0.max-w-prose>*:first-child{margin-top:.75rem}.toc ul,.toc li{list-style-type:none;padding-left:0;padding-right:0;line-height:1.375}.toc ul ul:where([dir=ltr],[dir=ltr] *){padding-left:1rem}.toc ul ul:where([dir=rtl],[dir=rtl] *){padding-right:1rem}.toc a{font-weight:400;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.toc a:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.toc ul>li:where([dir=rtl],[dir=rtl] *){margin-right:0}.highlight-wrapper{display:block}.highlight{position:relative;z-index:0}.highlight:hover>.copy-button{visibility:visible}.copy-button{visibility:hidden;position:absolute;top:0;right:0;z-index:10;width:5rem;cursor:pointer;white-space:nowrap;border-bottom-left-radius:.375rem;border-top-right-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-200),var(--tw-bg-opacity));padding-top:.25rem;padding-bottom:.25rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity));opacity:.9}.copy-button:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.copy-button:hover,.copy-button:focus,.copy-button:active,.copy-button:active:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.copy-button:hover:is(.dark *),.copy-button:focus:is(.dark *),.copy-button:active:is(.dark *),.copy-button:active:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.copy-textarea{position:absolute;z-index:-10;opacity:.05}.katex-display{overflow:auto hidden}table{display:block;overflow:auto}code{word-wrap:break-word;overflow-wrap:break-word}.prose .chroma{position:static;border-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-50),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.prose .chroma:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.chroma .lntd,.chroma .lntd pre{margin:0;border-style:none;padding:0;vertical-align:top}.chroma .lntable{display:block;width:auto;overflow:hidden;padding-left:1rem;padding-right:1rem;padding-top:.75rem;padding-bottom:.75rem;font-size:1rem;line-height:1.5rem;border-spacing:0}.chroma .hl{margin-left:-1rem;margin-right:-1rem;display:block;width:auto;--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity));padding-left:1rem;padding-right:1rem}.chroma .hl:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.chroma .lntd .hl{margin:0;padding:0}.chroma .lnt,.chroma .ln{margin-right:.4em;padding-left:.4em;padding-right:.4em;padding-top:0;padding-bottom:0;--tw-text-opacity:1;color:rgba(var(--color-neutral-600),var(--tw-text-opacity))}.chroma .lnt:is(.dark *),.chroma .ln:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .nc,.chroma .fm,.chroma .nn,.chroma .vc,.chroma .o{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.chroma .k:is(.dark *),.chroma .kd:is(.dark *),.chroma .kn:is(.dark *),.chroma .kp:is(.dark *),.chroma .kr:is(.dark *),.chroma .nc:is(.dark *),.chroma .fm:is(.dark *),.chroma .nn:is(.dark *),.chroma .vc:is(.dark *),.chroma .o:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.chroma .kc{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.chroma .kc:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .kt,.chroma .nv,.chroma .vi,.chroma .vm,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.chroma .kt:is(.dark *),.chroma .nv:is(.dark *),.chroma .vi:is(.dark *),.chroma .vm:is(.dark *),.chroma .m:is(.dark *),.chroma .mb:is(.dark *),.chroma .mf:is(.dark *),.chroma .mh:is(.dark *),.chroma .mi:is(.dark *),.chroma .il:is(.dark *),.chroma .mo:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}.chroma .n,.chroma .nd,.chroma .ni,.chroma .nl{--tw-text-opacity:1;color:rgba(var(--color-secondary-900),var(--tw-text-opacity))}.chroma .n:is(.dark *),.chroma .nd:is(.dark *),.chroma .ni:is(.dark *),.chroma .nl:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-200),var(--tw-text-opacity))}.chroma .na,.chroma .nb,.chroma .bp,.chroma .nx,.chroma .py,.chroma .nt{--tw-text-opacity:1;color:rgba(var(--color-secondary-800),var(--tw-text-opacity))}.chroma .na:is(.dark *),.chroma .nb:is(.dark *),.chroma .bp:is(.dark *),.chroma .nx:is(.dark *),.chroma .py:is(.dark *),.chroma .nt:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-300),var(--tw-text-opacity))}.chroma .no,.chroma .ne,.chroma .vg{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.chroma .no:is(.dark *),.chroma .ne:is(.dark *),.chroma .vg:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .nf{--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}.chroma .nf:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .l,.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .s1,.chroma .gi,.chroma .go,.chroma .gp{--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}.chroma .l:is(.dark *),.chroma .ld:is(.dark *),.chroma .s:is(.dark *),.chroma .sa:is(.dark *),.chroma .sb:is(.dark *),.chroma .sc:is(.dark *),.chroma .dl:is(.dark *),.chroma .sd:is(.dark *),.chroma .s2:is(.dark *),.chroma .sh:is(.dark *),.chroma .si:is(.dark *),.chroma .sx:is(.dark *),.chroma .s1:is(.dark *),.chroma .gi:is(.dark *),.chroma .go:is(.dark *),.chroma .gp:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .se{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.chroma .se:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .sr,.chroma .ss{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}.chroma .sr:is(.dark *),.chroma .ss:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .ow{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .ow:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.chroma .c,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .c:is(.dark *),.chroma .cm:is(.dark *),.chroma .c1:is(.dark *),.chroma .cs:is(.dark *),.chroma .cp:is(.dark *),.chroma .cpf:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ch{font-weight:600;font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .ch:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ge{font-style:italic}.chroma .gh{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gs{font-weight:600}.chroma .gu,.chroma .gt{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gl{text-decoration-line:underline}pre{text-align:left}.thumbnail{min-width:300px;height:180px;background-repeat:no-repeat;background-size:cover;background-position:50%}.thumbnail_card{height:200px;background-repeat:no-repeat;background-size:cover;background-position:50%}.thumbnail_card_related{height:150px;background-repeat:no-repeat;background-size:cover;background-position:50%}.thumbnail_card_term{height:150px;background-repeat:no-repeat;background-size:cover;background-position:50%}.single_hero_basic{background-repeat:no-repeat;background-size:cover;background-position:50%}.single_hero_round{max-height:50vh;-o-object-fit:cover;object-fit:cover}.single_hero_background{background-repeat:no-repeat;background-size:cover;background-position:50%;width:calc(100% + 40px);z-index:-10;margin-left:-20px}.hero_gradient{width:100%;height:100%}.thumbnailshadow{box-shadow:5px 5px 20px 1px rgba(0,0,0,.3)}.anchor{display:block;position:relative;top:-150px;height:0;visibility:hidden}@media(min-width:640px){.thumbnail{min-width:100%;height:180px}.article{flex-wrap:wrap}}@media(min-width:853px){.thumbnail{min-width:300px;min-height:180px;height:auto}.article{flex-wrap:nowrap}}.medium-zoom-image--opened{z-index:100}.nested-menu:hover+.menuhide{visibility:visible;opacity:1;transition:visibility .3s,opacity .3s ease-in-out}.menuhide:hover{visibility:visible;opacity:1;transition:visibility .3s,opacity .3s ease-in-out}.menuhide{visibility:hidden;opacity:0;transition:visibility .3s,opacity .3s ease-in-out;z-index:1000}.active{text-decoration-line:underline;text-decoration-thickness:3px;text-underline-offset:4px}.grid-w10{width:calc(10% - 5px);margin:0!important}.grid-w15{width:calc(15% - 5px);margin:0!important}.grid-w20{width:calc(20% - 5px);margin:0!important}.grid-w25{width:calc(25% - 5px);margin:0!important}.grid-w30{width:calc(30% - 5px);margin:0!important}.grid-w33{width:calc(33% - 5px);margin:0!important}.grid-w35{width:calc(35% - 5px);margin:0!important}.grid-w40{width:calc(40% - 5px);margin:0!important}.grid-w45{width:calc(45% - 5px);margin:0!important}.grid-w50{width:calc(50% - 5px);margin:0!important}.grid-w55{width:calc(55% - 5px);margin:0!important}.grid-w60{width:calc(60% - 5px);margin:0!important}.grid-w65{width:calc(65% - 5px);margin:0!important}.grid-w66{width:calc(66% - 5px);margin:0!important}.grid-w70{width:calc(70% - 5px);margin:0!important}.grid-w75{width:calc(75% - 5px);margin:0!important}.grid-w80{width:calc(80% - 5px);margin:0!important}.grid-w85{width:calc(85% - 5px);margin:0!important}.grid-w90{width:calc(90% - 5px);margin:0!important}.grid-w95{width:calc(95% - 5px);margin:0!important}.grid-w100{width:calc(100% - 5px);margin:0!important}@media(min-width:640px){.sm\:grid-w10{width:calc(10% - 5px);margin:0!important}.sm\:grid-w15{width:calc(15% - 5px);margin:0!important}.sm\:grid-w20{width:calc(20% - 5px);margin:0!important}.sm\:grid-w25{width:calc(25% - 5px);margin:0!important}.sm\:grid-w30{width:calc(30% - 5px);margin:0!important}.sm\:grid-w33{width:calc(33% - 5px);margin:0!important}.sm\:grid-w35{width:calc(35% - 5px);margin:0!important}.sm\:grid-w40{width:calc(40% - 5px);margin:0!important}.sm\:grid-w45{width:calc(45% - 5px);margin:0!important}.sm\:grid-w50{width:calc(50% - 5px);margin:0!important}.sm\:grid-w55{width:calc(55% - 5px);margin:0!important}.sm\:grid-w60{width:calc(60% - 5px);margin:0!important}.sm\:grid-w65{width:calc(65% - 5px);margin:0!important}.sm\:grid-w66{width:calc(66% - 5px);margin:0!important}.sm\:grid-w70{width:calc(70% - 5px);margin:0!important}.sm\:grid-w75{width:calc(75% - 5px);margin:0!important}.sm\:grid-w80{width:calc(80% - 5px);margin:0!important}.sm\:grid-w85{width:calc(85% - 5px);margin:0!important}.sm\:grid-w90{width:calc(90% - 5px);margin:0!important}.sm\:grid-w95{width:calc(95% - 5px);margin:0!important}.sm\:grid-w100{width:calc(100% - 5px);margin:0!important}}@media(min-width:853px){.md\:grid-w10{width:calc(10% - 5px);margin:0!important}.md\:grid-w15{width:calc(15% - 5px);margin:0!important}.md\:grid-w20{width:calc(20% - 5px);margin:0!important}.md\:grid-w25{width:calc(25% - 5px);margin:0!important}.md\:grid-w30{width:calc(30% - 5px);margin:0!important}.md\:grid-w33{width:calc(33% - 5px);margin:0!important}.md\:grid-w35{width:calc(35% - 5px);margin:0!important}.md\:grid-w40{width:calc(40% - 5px);margin:0!important}.md\:grid-w45{width:calc(45% - 5px);margin:0!important}.md\:grid-w50{width:calc(50% - 5px);margin:0!important}.md\:grid-w55{width:calc(55% - 5px);margin:0!important}.md\:grid-w60{width:calc(60% - 5px);margin:0!important}.md\:grid-w65{width:calc(65% - 5px);margin:0!important}.md\:grid-w66{width:calc(66% - 5px);margin:0!important}.md\:grid-w70{width:calc(70% - 5px);margin:0!important}.md\:grid-w75{width:calc(75% - 5px);margin:0!important}.md\:grid-w80{width:calc(80% - 5px);margin:0!important}.md\:grid-w85{width:calc(85% - 5px);margin:0!important}.md\:grid-w90{width:calc(90% - 5px);margin:0!important}.md\:grid-w95{width:calc(95% - 5px);margin:0!important}.md\:grid-w100{width:calc(100% - 5px);margin:0!important}}@media(min-width:1024px){.lg\:grid-w10{width:calc(10% - 5px);margin:0!important}.lg\:grid-w15{width:calc(15% - 5px);margin:0!important}.lg\:grid-w20{width:calc(20% - 5px);margin:0!important}.lg\:grid-w25{width:calc(25% - 5px);margin:0!important}.lg\:grid-w30{width:calc(30% - 5px);margin:0!important}.lg\:grid-w33{width:calc(33% - 5px);margin:0!important}.lg\:grid-w35{width:calc(35% - 5px);margin:0!important}.lg\:grid-w40{width:calc(40% - 5px);margin:0!important}.lg\:grid-w45{width:calc(45% - 5px);margin:0!important}.lg\:grid-w50{width:calc(50% - 5px);margin:0!important}.lg\:grid-w55{width:calc(55% - 5px);margin:0!important}.lg\:grid-w60{width:calc(60% - 5px);margin:0!important}.lg\:grid-w65{width:calc(65% - 5px);margin:0!important}.lg\:grid-w66{width:calc(66% - 5px);margin:0!important}.lg\:grid-w70{width:calc(70% - 5px);margin:0!important}.lg\:grid-w75{width:calc(75% - 5px);margin:0!important}.lg\:grid-w80{width:calc(80% - 5px);margin:0!important}.lg\:grid-w85{width:calc(85% - 5px);margin:0!important}.lg\:grid-w90{width:calc(90% - 5px);margin:0!important}.lg\:grid-w95{width:calc(95% - 5px);margin:0!important}.lg\:grid-w100{width:calc(100% - 5px);margin:0!important}}@media(min-width:1280px){.xl\:grid-w10{width:calc(10% - 5px);margin:0!important}.xl\:grid-w15{width:calc(15% - 5px);margin:0!important}.xl\:grid-w20{width:calc(20% - 5px);margin:0!important}.xl\:grid-w25{width:calc(25% - 5px);margin:0!important}.xl\:grid-w30{width:calc(30% - 5px);margin:0!important}.xl\:grid-w33{width:calc(33% - 5px);margin:0!important}.xl\:grid-w35{width:calc(35% - 5px);margin:0!important}.xl\:grid-w40{width:calc(40% - 5px);margin:0!important}.xl\:grid-w45{width:calc(45% - 5px);margin:0!important}.xl\:grid-w50{width:calc(50% - 5px);margin:0!important}.xl\:grid-w55{width:calc(55% - 5px);margin:0!important}.xl\:grid-w60{width:calc(60% - 5px);margin:0!important}.xl\:grid-w65{width:calc(65% - 5px);margin:0!important}.xl\:grid-w66{width:calc(66% - 5px);margin:0!important}.xl\:grid-w70{width:calc(70% - 5px);margin:0!important}.xl\:grid-w75{width:calc(75% - 5px);margin:0!important}.xl\:grid-w80{width:calc(80% - 5px);margin:0!important}.xl\:grid-w85{width:calc(85% - 5px);margin:0!important}.xl\:grid-w90{width:calc(90% - 5px);margin:0!important}.xl\:grid-w95{width:calc(95% - 5px);margin:0!important}.xl\:grid-w100{width:calc(100% - 5px);margin:0!important}}@media(min-width:1536px){.2xl\:grid-w10{width:calc(10% - 5px);margin:0!important}.2xl\:grid-w15{width:calc(15% - 5px);margin:0!important}.2xl\:grid-w20{width:calc(20% - 5px);margin:0!important}.2xl\:grid-w25{width:calc(25% - 5px);margin:0!important}.2xl\:grid-w30{width:calc(30% - 5px);margin:0!important}.2xl\:grid-w33{width:calc(33% - 5px);margin:0!important}.2xl\:grid-w35{width:calc(35% - 5px);margin:0!important}.2xl\:grid-w40{width:calc(40% - 5px);margin:0!important}.2xl\:grid-w45{width:calc(45% - 5px);margin:0!important}.2xl\:grid-w50{width:calc(50% - 5px);margin:0!important}.2xl\:grid-w55{width:calc(55% - 5px);margin:0!important}.2xl\:grid-w60{width:calc(60% - 5px);margin:0!important}.2xl\:grid-w65{width:calc(65% - 5px);margin:0!important}.2xl\:grid-w66{width:calc(66% - 5px);margin:0!important}.2xl\:grid-w70{width:calc(70% - 5px);margin:0!important}.2xl\:grid-w75{width:calc(75% - 5px);margin:0!important}.2xl\:grid-w80{width:calc(80% - 5px);margin:0!important}.2xl\:grid-w85{width:calc(85% - 5px);margin:0!important}.2xl\:grid-w90{width:calc(90% - 5px);margin:0!important}.2xl\:grid-w95{width:calc(95% - 5px);margin:0!important}.2xl\:grid-w100{width:calc(100% - 5px);margin:0!important}}.ratio-16-9{padding-top:56.25%}.ratio-21-9{padding-top:42.85%}.ratio-32-9{padding-top:28.125%}@media(min-width:640px){.sm\:ratio-16-9{padding-top:56.25%}.sm\:ratio-21-9{padding-top:42.85%}.sm\:ratio-32-9{padding-top:28.125%}}@media(min-width:853px){.md\:ratio-16-9{padding-top:56.25%}.md\:ratio-21-9{padding-top:42.85%}.md\:ratio-32-9{padding-top:28.125%}}@media(min-width:1024px){.lg\:ratio-16-9{padding-top:56.25%}.lg\:ratio-21-9{padding-top:42.85%}.lg\:ratio-32-9{padding-top:28.125%}}@media(min-width:1280px){.xl\:ratio-16-9{padding-top:56.25%}.xl\:ratio-21-9{padding-top:42.85%}.xl\:ratio-32-9{padding-top:28.125%}}@media(min-width:1536px){.2xl\:ratio-16-9{padding-top:56.25%}.2xl\:ratio-21-9{padding-top:42.85%}.2xl\:ratio-32-9{padding-top:28.125%}}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.dark\:prose-invert:is(.dark *) :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-neutral-600),1)}.dark\:prose-invert:is(.dark *) :where(a):not(:where([class~=not-prose],[class~=not-prose] *)):hover{color:rgba(var(--color-primary-400),1)}.dark\:prose-invert:is(.dark *) :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:rgba(var(--color-neutral-200),1);background-color:rgba(var(--color-neutral-700),1)}.dark\:prose-invert:is(.dark *) :where(mark):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:rgba(var(--color-primary-400),1)}.dark\:prose-invert:is(.dark *) :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:rgba(var(--color-neutral-700),1)}.dark\:prose-invert:is(.dark *) :where(a.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-400),1)}.dark\:prose-invert:is(.dark *) :where(p.active):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-color:rgba(var(--color-primary-400),1)}.after\:clear-both::after{content:var(--tw-content);clear:both}.after\:block::after{content:var(--tw-content);display:block}.after\:content-\[\'\'\]::after{--tw-content:'';content:var(--tw-content)}.first\:mt-8:first-child{margin-top:2rem}.empty\:hidden:empty{display:none}.group:hover .group-hover\:text-primary-300{--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.group:hover .group-hover\:text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.group:hover .group-hover\:underline{text-decoration-line:underline}.group:hover .group-hover\:decoration-primary-500{text-decoration-color:rgba(var(--color-primary-500),1)}.group:hover .group-hover\:opacity-100{opacity:1}.data-\[twe-carousel-fade\]\:z-0[data-twe-carousel-fade]{z-index:0}.data-\[twe-carousel-fade\]\:z-\[1\][data-twe-carousel-fade]{z-index:1}.data-\[popper-reference-hidden\]\:hidden[data-popper-reference-hidden]{display:none}.data-\[twe-carousel-fade\]\:opacity-0[data-twe-carousel-fade]{opacity:0}.data-\[twe-carousel-fade\]\:opacity-100[data-twe-carousel-fade]{opacity:1}.data-\[twe-carousel-fade\]\:duration-\[600ms\][data-twe-carousel-fade]{transition-duration:600ms}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-x-0{border-left-width:0;border-right-width:0}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-x-0{border-left-width:0;border-right-width:0}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-e-0{border-inline-end-width:0}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-s-0{border-inline-start-width:0}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-t{border-top-width:1px}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-e-0{border-inline-end-width:0}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-s-0{border-inline-start-width:0}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-t{border-top-width:1px}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-solid{border-style:solid}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-solid{border-style:solid}.group[data-twe-input-focused] .group-data-\[twe-input-focused\]\:border-t-transparent{border-top-color:transparent}.group[data-twe-input-state-active] .group-data-\[twe-input-state-active\]\:border-t-transparent{border-top-color:transparent}.hover\:border-transparent:hover{border-color:transparent}.hover\:\!bg-primary-500:hover{--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))!important}.hover\:bg-primary-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.hover\:bg-primary-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))}.hover\:bg-primary-600:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.hover\:text-neutral:hover{--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}.hover\:text-primary-400:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.hover\:text-primary-500:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.hover\:text-primary-600:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.hover\:text-primary-700:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:decoration-primary-400:hover{text-decoration-color:rgba(var(--color-primary-400),1)}.hover\:decoration-2:hover{text-decoration-thickness:2px}.hover\:underline-offset-2:hover{text-underline-offset:2px}.hover\:opacity-90:hover{opacity:.9}.hover\:outline-none:hover{outline:2px solid transparent;outline-offset:2px}.focus\:translate-y-0:focus{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.focus\:bg-primary-100:focus{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.focus\:no-underline:focus{text-decoration-line:none}.focus\:opacity-90:focus{opacity:.9}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:outline-dotted:focus{outline-style:dotted}.focus\:outline-2:focus{outline-width:2px}.focus\:outline-transparent:focus{outline-color:transparent}@media(prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}.dark\:flex:is(.dark *){display:flex}.dark\:hidden:is(.dark *){display:none}.dark\:border-neutral-400:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--color-neutral-400),var(--tw-border-opacity))}.dark\:border-neutral-600:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--color-neutral-600),var(--tw-border-opacity))}.dark\:border-neutral-700:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--color-neutral-700),var(--tw-border-opacity))}.dark\:border-primary-300:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--color-primary-300),var(--tw-border-opacity))}.dark\:border-primary-600:is(.dark *){--tw-border-opacity:1;border-color:rgba(var(--color-primary-600),var(--tw-border-opacity))}.dark\:bg-neutral-400:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-400),var(--tw-bg-opacity))}.dark\:bg-neutral-600:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity))}.dark\:bg-neutral-700:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity))}.dark\:bg-neutral-800:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-800),var(--tw-bg-opacity))}.dark\:bg-neutral-800\/50:is(.dark *){background-color:rgba(var(--color-neutral-800),.5)}.dark\:bg-neutral-900\/50:is(.dark *){background-color:rgba(var(--color-neutral-900),.5)}.dark\:bg-primary-300:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-300),var(--tw-bg-opacity))}.dark\:bg-primary-400:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}.dark\:bg-primary-800:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-800),var(--tw-bg-opacity))}.dark\:bg-primary-900:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.dark\:from-neutral-800:is(.dark *){--tw-gradient-from:rgba(var(--color-neutral-800), 1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(var(--color-neutral-800), 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-primary-600:is(.dark *){--tw-gradient-from:rgba(var(--color-primary-600), 1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(var(--color-primary-600), 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:to-neutral-800:is(.dark *){--tw-gradient-to:rgba(var(--color-neutral-800), 1) var(--tw-gradient-to-position)}.dark\:to-secondary-800:is(.dark *){--tw-gradient-to:rgba(var(--color-secondary-800), 1) var(--tw-gradient-to-position)}.dark\:text-neutral:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}.dark\:text-neutral-100:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-100),var(--tw-text-opacity))}.dark\:text-neutral-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.dark\:text-neutral-300:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.dark\:text-neutral-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.dark\:text-neutral-500:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.dark\:text-neutral-700:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.dark\:text-neutral-800:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.dark\:text-primary-200:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-200),var(--tw-text-opacity))}.dark\:text-primary-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark\:opacity-60:is(.dark *){opacity:.6}.dark\:scrollbar-track-neutral-800:is(.dark *){--scrollbar-track:rgba(var(--color-neutral-800), 1) !important}.dark\:scrollbar-thumb-neutral-600:is(.dark *){--scrollbar-thumb:rgba(var(--color-neutral-600), 1) !important}.group:hover .dark\:group-hover\:text-neutral-700:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-primary-400:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark\:hover\:\!bg-primary-700:hover:is(.dark *){--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-700),var(--tw-bg-opacity))!important}.dark\:hover\:bg-primary-400:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}.dark\:hover\:bg-primary-900:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.dark\:hover\:text-neutral-800:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.dark\:hover\:text-primary-400:hover:is(.dark *){--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark\:focus\:bg-primary-900:focus:is(.dark *){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}@media(min-width:640px){.sm\:mb-0{margin-bottom:0}.sm\:mt-16{margin-top:4rem}.sm\:w-1\/2{width:50%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:overflow-hidden{overflow:hidden}.sm\:p-6{padding:1.5rem}.sm\:px-14{padding-left:3.5rem;padding-right:3.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-24{padding-top:6rem;padding-bottom:6rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}}@media(min-width:853px){.md\:-mr-16{margin-right:-4rem}.md\:ml-12{margin-left:3rem}.md\:mr-7{margin-right:1.75rem}.md\:mt-0{margin-top:0}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-56{height:14rem}.md\:h-\[200px\]{height:200px}.md\:w-1\/3{width:33.333333%}.md\:w-auto{width:auto}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:justify-start{justify-content:flex-start}.md\:p-\[10vh\]{padding:10vh}.md\:px-24{padding-left:6rem;padding-right:6rem}}@media(min-width:1024px){.lg\:absolute{position:absolute}.lg\:relative{position:relative}.lg\:sticky{position:sticky}.lg\:left-0{left:0}.lg\:top-10{top:2.5rem}.lg\:top-\[140px\]{top:140px}.lg\:order-last{order:9999}.lg\:m-0{margin:0}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:ml-auto{margin-left:auto}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-72{height:18rem}.lg\:h-full{height:100%}.lg\:w-1\/4{width:25%}.lg\:w-auto{width:auto}.lg\:max-w-7xl{max-width:80rem}.lg\:max-w-none{max-width:none}.lg\:max-w-xs{max-width:20rem}.lg\:grid-flow-col-dense{grid-auto-flow:column dense}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:gap-24{gap:6rem}.lg\:p-\[12vh\]{padding:12vh}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-32{padding-left:8rem;padding-right:8rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-16{padding-top:4rem;padding-bottom:4rem}.lg\:py-32{padding-top:8rem;padding-bottom:8rem}}@media(min-width:1280px){.xl\:w-1\/4{width:25%}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:1536px){.\32xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}.ltr\:-left-6:where([dir=ltr],[dir=ltr] *){left:-1.5rem}.ltr\:right-0:where([dir=ltr],[dir=ltr] *){right:0}.ltr\:-ml-5:where([dir=ltr],[dir=ltr] *){margin-left:-1.25rem}.ltr\:ml-2:where([dir=ltr],[dir=ltr] *){margin-left:.5rem}.ltr\:mr-14:where([dir=ltr],[dir=ltr] *){margin-right:3.5rem}.ltr\:mr-4:where([dir=ltr],[dir=ltr] *){margin-right:1rem}.ltr\:block:where([dir=ltr],[dir=ltr] *){display:block}.ltr\:inline:where([dir=ltr],[dir=ltr] *){display:inline}.ltr\:hidden:where([dir=ltr],[dir=ltr] *){display:none}.ltr\:border-l:where([dir=ltr],[dir=ltr] *){border-left-width:1px}.ltr\:pl-5:where([dir=ltr],[dir=ltr] *){padding-left:1.25rem}.ltr\:pr-2:where([dir=ltr],[dir=ltr] *){padding-right:.5rem}.ltr\:pr-3:where([dir=ltr],[dir=ltr] *){padding-right:.75rem}.ltr\:text-right:where([dir=ltr],[dir=ltr] *){text-align:right}@media(min-width:640px){.ltr\:sm\:mr-7:where([dir=ltr],[dir=ltr] *){margin-right:1.75rem}.ltr\:sm\:last\:mr-0:last-child:where([dir=ltr],[dir=ltr] *){margin-right:0}}@media(min-width:1024px){.ltr\:lg\:pl-8:where([dir=ltr],[dir=ltr] *){padding-left:2rem}}.rtl\:-right-6:where([dir=rtl],[dir=rtl] *){right:-1.5rem}.rtl\:left-0:where([dir=rtl],[dir=rtl] *){left:0}.rtl\:-mr-5:where([dir=rtl],[dir=rtl] *){margin-right:-1.25rem}.rtl\:ml-14:where([dir=rtl],[dir=rtl] *){margin-left:3.5rem}.rtl\:ml-4:where([dir=rtl],[dir=rtl] *){margin-left:1rem}.rtl\:mr-2:where([dir=rtl],[dir=rtl] *){margin-right:.5rem}.rtl\:block:where([dir=rtl],[dir=rtl] *){display:block}.rtl\:inline:where([dir=rtl],[dir=rtl] *){display:inline}.rtl\:hidden:where([dir=rtl],[dir=rtl] *){display:none}.rtl\:border-r:where([dir=rtl],[dir=rtl] *){border-right-width:1px}.rtl\:pl-2:where([dir=rtl],[dir=rtl] *){padding-left:.5rem}.rtl\:pl-3:where([dir=rtl],[dir=rtl] *){padding-left:.75rem}.rtl\:pr-5:where([dir=rtl],[dir=rtl] *){padding-right:1.25rem}.rtl\:text-left:where([dir=rtl],[dir=rtl] *){text-align:left}@media(min-width:640px){.rtl\:sm\:ml-7:where([dir=rtl],[dir=rtl] *){margin-left:1.75rem}.rtl\:sm\:last\:ml-0:last-child:where([dir=rtl],[dir=rtl] *){margin-left:0}}@media(min-width:1024px){.rtl\:lg\:pr-8:where([dir=rtl],[dir=rtl] *){padding-right:2rem}}@media print{.print\:hidden{display:none}} \ No newline at end of file diff --git a/css/main.bundle.min.b341e75d494bde9b8b3f27689cff89cd80ec20878b291b6fb53197b0d0ba85f9ad1a26bd179879742cabb98b9f3cff7fa71cacca60994d398dc9e629e00596be.css b/css/main.bundle.min.b341e75d494bde9b8b3f27689cff89cd80ec20878b291b6fb53197b0d0ba85f9ad1a26bd179879742cabb98b9f3cff7fa71cacca60994d398dc9e629e00596be.css deleted file mode 100644 index b6ada35..0000000 --- a/css/main.bundle.min.b341e75d494bde9b8b3f27689cff89cd80ec20878b291b6fb53197b0d0ba85f9ad1a26bd179879742cabb98b9f3cff7fa71cacca60994d398dc9e629e00596be.css +++ /dev/null @@ -1 +0,0 @@ -:root{--color-neutral:255, 255, 255;--color-neutral-50:248, 250, 252;--color-neutral-100:241, 245, 249;--color-neutral-200:226, 232, 240;--color-neutral-300:203, 213, 225;--color-neutral-400:148, 163, 184;--color-neutral-500:100, 116, 139;--color-neutral-600:71, 85, 105;--color-neutral-700:51, 65, 85;--color-neutral-800:30, 41, 59;--color-neutral-900:15, 23, 42;--color-primary-50:239, 246, 255;--color-primary-100:219, 234, 254;--color-primary-200:191, 219, 254;--color-primary-300:147, 197, 253;--color-primary-400:96, 165, 250;--color-primary-500:59, 130, 246;--color-primary-600:37, 99, 235;--color-primary-700:29, 78, 216;--color-primary-800:30, 64, 175;--color-primary-900:30, 58, 138;--color-secondary-50:236, 254, 255;--color-secondary-100:207, 250, 254;--color-secondary-200:165, 243, 252;--color-secondary-300:103, 232, 249;--color-secondary-400:34, 211, 238;--color-secondary-500:6, 182, 212;--color-secondary-600:8, 145, 178;--color-secondary-700:14, 116, 144;--color-secondary-800:21, 94, 117;--color-secondary-900:22, 78, 99}/*!Blowfish v0.0.1 | MIT License | https://github.com/nunocoracao/blowfish*//*!tailwindcss v3.1.8 | MIT License | https://tailwindcss.com*/*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:initial}::before,::after{--tw-content:''}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding-top:.5rem;padding-right:.75rem;padding-bottom:.5rem;padding-left:.75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[type=text]:focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where([class~=lead]):not(:where([class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:none;font-weight:500;-webkit-text-decoration-color:rgba(var(--color-primary-300),1);text-decoration-color:rgba(var(--color-primary-300),1)}.prose :where(a):not(:where([class~=not-prose] *)):hover{color:rgba(var(--color-neutral),1);text-decoration:none;background-color:rgba(var(--color-primary-600),1);border-radius:.09rem}.prose :where(strong):not(:where([class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=As]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=as]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=Is]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=is]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose] *))::before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure>*):not(:where([class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(code):not(:where([class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose] *))::before{content:"`"}.prose :where(code):not(:where([class~=not-prose] *))::after{content:"`"}.prose :where(a code):not(:where([class~=not-prose] *)){color:var(--tw-prose-code)}.prose :where(h1 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-right:1.1428571em;padding-bottom:.8571429em;padding-left:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose] *))::before{content:none}.prose :where(pre code):not(:where([class~=not-prose] *))::after{content:none}.prose :where(table):not(:where([class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose] *)){vertical-align:top}.prose{--tw-prose-body:rgba(var(--color-neutral-700), 1);--tw-prose-headings:rgba(var(--color-neutral-800), 1);--tw-prose-lead:rgba(var(--color-neutral-500), 1);--tw-prose-links:rgba(var(--color-primary-700), 1);--tw-prose-bold:rgba(var(--color-neutral-900), 1);--tw-prose-counters:rgba(var(--color-neutral-800), 1);--tw-prose-bullets:rgba(var(--color-neutral-500), 1);--tw-prose-hr:rgba(var(--color-neutral-200), 1);--tw-prose-quotes:rgba(var(--color-neutral-700), 1);--tw-prose-quote-borders:rgba(var(--color-primary-200), 1);--tw-prose-captions:rgba(var(--color-neutral-500), 1);--tw-prose-code:rgba(var(--color-secondary-700), 1);--tw-prose-pre-code:rgba(var(--color-neutral-700), 1);--tw-prose-pre-bg:rgba(var(--color-neutral-50), 1);--tw-prose-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-td-borders:rgba(var(--color-neutral-300), 1);--tw-prose-invert-body:rgba(var(--color-neutral-300), 1);--tw-prose-invert-headings:rgba(var(--color-neutral-50), 1);--tw-prose-invert-lead:rgba(var(--color-neutral-500), 1);--tw-prose-invert-links:rgba(var(--color-primary-400), 1);--tw-prose-invert-bold:rgba(var(--color-neutral), 1);--tw-prose-invert-counters:rgba(var(--color-neutral-400), 1);--tw-prose-invert-bullets:rgba(var(--color-neutral-600), 1);--tw-prose-invert-hr:rgba(var(--color-neutral-500), 1);--tw-prose-invert-quotes:rgba(var(--color-neutral-200), 1);--tw-prose-invert-quote-borders:rgba(var(--color-primary-900), 1);--tw-prose-invert-captions:rgba(var(--color-neutral-400), 1);--tw-prose-invert-code:rgba(var(--color-secondary-400), 1);--tw-prose-invert-pre-code:rgba(var(--color-neutral-200), 1);--tw-prose-invert-pre-bg:rgba(var(--color-neutral-700), 1);--tw-prose-invert-th-borders:rgba(var(--color-neutral-500), 1);--tw-prose-invert-td-borders:rgba(var(--color-neutral-700), 1);font-size:1rem;line-height:1.75}.prose :where(p):not(:where([class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(video):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose] *)){padding-top:.5714286em;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-right:0}.prose :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose :where(kbd):not(:where([class~=not-prose] *)){background-color:rgba(var(--color-neutral-200),1);padding:.1rem .4rem;border-radius:.25rem;font-size:.9rem;font-weight:600}.prose :where(mark):not(:where([class~=not-prose] *)){color:rgba(var(--color-neutral-800),1);background-color:rgba(var(--color-secondary-200),1);padding:.1rem .2rem;border-radius:.12rem}.prose-sm :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-base :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose-base :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose-base :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-lg :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.8888889em;margin-bottom:.8888889em}.prose-lg :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-xl :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.8em;margin-bottom:.8em}.prose-xl :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.2em}.prose-xl :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.2em}.prose-xl :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.2em}.prose-xl :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.2em}.prose-xl :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose-xl :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.prose-2xl :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-top:.8333333em;margin-bottom:.8333333em}.prose-2xl :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.3333333em}.prose-2xl :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.3333333em}.prose-2xl :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose] *)){margin-top:1.3333333em}.prose-2xl :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.3333333em}.prose-2xl :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose-2xl :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.top-\[100vh\]{top:100vh}.bottom-0{bottom:0}.top-\[calc\(100vh-5\.5rem\)\]{top:calc(100vh - 5.5rem)}.top-20{top:5rem}.top-0{top:0}.z-50{z-index:50}.z-10{z-index:10}.z-30{z-index:30}.order-first{order:-9999}.m-auto{margin:auto}.m-1{margin:.25rem}.m-0{margin:0}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mb-3{margin-bottom:.75rem}.mt-8{margin-top:2rem}.mb-12{margin-bottom:3rem}.mt-0{margin-top:0}.mt-12{margin-top:3rem}.mt-10{margin-top:2.5rem}.mt-6{margin-top:1.5rem}.mt-5{margin-top:1.25rem}.mt-1{margin-top:.25rem}.mb-6{margin-bottom:1.5rem}.mt-3{margin-top:.75rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.ml-3{margin-left:.75rem}.mt-\[0\.1rem\]{margin-top:.1rem}.mt-4{margin-top:1rem}.\!mt-0{margin-top:0!important}.\!mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.-mb-1{margin-bottom:-.25rem}.ml-2{margin-left:.5rem}.\!mb-9{margin-bottom:2.25rem!important}.mt-20{margin-top:5rem}.-mr-2{margin-right:-.5rem}.mb-0{margin-bottom:0}.-mr-48{margin-right:-12rem}.mb-\[2px\]{margin-bottom:2px}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.hidden{display:none}.h-screen{height:100vh}.h-12{height:3rem}.h-full{height:100%}.h-24{height:6rem}.h-8{height:2rem}.h-\[45vh\]{height:45vh}.h-36{height:9rem}.h-1\/2{height:50%}.h-48{height:12rem}.max-h-\[5rem\]{max-height:5rem}.min-h-0{min-height:0}.w-12{width:3rem}.w-36{width:9rem}.w-full{width:100%}.w-24{width:6rem}.w-screen{width:100vw}.w-8{width:2rem}.w-6{width:1.5rem}.min-w-0{min-width:0}.min-w-\[1\.8rem\]{min-width:1.8rem}.min-w-\[2\.4rem\]{min-width:2.4rem}.min-w-\[220px\]{min-width:220px}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.max-w-prose{max-width:65ch}.max-w-3xl{max-width:48rem}.max-w-\[5rem\]{max-width:5rem}.max-w-xl{max-width:36rem}.flex-none{flex:none}.flex-auto{flex:auto}.flex-1{flex:1}.grow{flex-grow:1}.-translate-y-8{--tw-translate-y:-2rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.25rem * var(--tw-space-x-reverse));margin-left:calc(1.25rem * calc(1 - var(--tw-space-x-reverse)))}.place-self-center{place-self:center}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.scroll-smooth{scroll-behavior:smooth}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.\!rounded-md{border-radius:.375rem!important}.rounded-xl{border-radius:.75rem}.rounded-2xl{border-radius:1rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-t{border-top-width:1px}.border-dotted{border-style:dotted}.border-neutral-400{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-400),var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-300),var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-200),var(--tw-border-opacity))}.border-primary-400{--tw-border-opacity:1;border-color:rgba(var(--color-primary-400),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--color-primary-500),var(--tw-border-opacity))}.bg-neutral{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral),var(--tw-bg-opacity))}.bg-primary-200{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-200),var(--tw-bg-opacity))}.bg-neutral\/50{background-color:rgba(var(--color-neutral),.5)}.bg-transparent{background-color:transparent}.bg-neutral-500\/50{background-color:rgba(var(--color-neutral-500),.5)}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-100),var(--tw-bg-opacity))}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-300),var(--tw-bg-opacity))}.bg-primary-100{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.bg-neutral-100\/50{background-color:rgba(var(--color-neutral-100),.5)}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-neutral{--tw-gradient-from:rgba(var(--color-neutral), 1);--tw-gradient-to:rgba(var(--color-neutral), 0);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-neutral-100{--tw-gradient-from:rgba(var(--color-neutral-100), 1);--tw-gradient-to:rgba(var(--color-neutral-100), 0);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary-500{--tw-gradient-from:rgba(var(--color-primary-500), 1);--tw-gradient-to:rgba(var(--color-primary-500), 0);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.to-transparent{--tw-gradient-to:transparent}.to-secondary-700{--tw-gradient-to:rgba(var(--color-secondary-700), 1)}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-left{-o-object-position:left;object-position:left}.p-4{padding:1rem}.p-1{padding:.25rem}.p-0{padding:0}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-0{padding-left:0;padding-right:0}.py-8{padding-top:2rem;padding-bottom:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.pt-8{padding-top:2rem}.pt-3{padding-top:.75rem}.pl-2{padding-left:.5rem}.pb-4{padding-bottom:1rem}.pt-4{padding-top:1rem}.pt-16{padding-top:4rem}.pb-32{padding-bottom:8rem}.pl-4{padding-left:1rem}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-text-bottom{vertical-align:text-bottom}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-xs{font-size:.75rem;line-height:1rem}.text-\[0\.6rem\]{font-size:.6rem}.font-extrabold{font-weight:800}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-normal{font-weight:400}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-7{line-height:1.75rem}.leading-6{line-height:1.5rem}.leading-3{line-height:.75rem}.text-neutral-400{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgba(var(--color-neutral-900),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.text-primary-700{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.\!text-neutral{--tw-text-opacity:1 !important;color:rgba(var(--color-neutral),var(--tw-text-opacity))!important}.text-primary-300{--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.text-neutral-300{--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.\!no-underline{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.decoration-primary-500{-webkit-text-decoration-color:rgba(var(--color-primary-500),1);text-decoration-color:rgba(var(--color-primary-500),1)}.decoration-neutral-300{-webkit-text-decoration-color:rgba(var(--color-neutral-300),1);text-decoration-color:rgba(var(--color-neutral-300),1)}.opacity-0{opacity:0}.mix-blend-normal{mix-blend-mode:normal}.mix-blend-multiply{mix-blend-mode:multiply}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}body a,body button{transition-property:color,background-color,border-color,fill,stroke,-webkit-text-decoration-color;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.icon svg{height:1em;width:1em}#search-query::-webkit-search-cancel-button,#search-query::-webkit-search-decoration,#search-query::-webkit-search-results-button,#search-query::-webkit-search-results-decoration{display:none}body:has(#menu-controller:checked){overflow-y:hidden}#menu-button:has(#menu-controller:checked){visibility:hidden}#menu-controller:checked~#menu-wrapper{visibility:visible;opacity:1}[dir=rtl] .prose blockquote{border-left-width:0;border-right-width:4px;padding-right:1rem}[dir=rtl] .prose ul>li,[dir=rtl] .prose ol>li{margin-right:1.75rem;padding-left:0;padding-right:.5rem}[dir=rtl] .prose ol>li:before,[dir=rtl] .prose ul>li:before{left:auto;right:.25rem}[dir=rtl] .prose thead td:first-child,[dir=rtl] .prose thead th:first-child{padding-right:0}[dir=rtl] .prose thead td:last-child,[dir=rtl] .prose thead th:last-child{padding-left:0}.prose div.min-w-0.max-w-prose>*:first-child{margin-top:.75rem}.toc ul,.toc li{list-style-type:none;padding-left:0;padding-right:0;line-height:1.375}[dir=ltr] .toc ul ul{padding-left:1rem}[dir=rtl] .toc ul ul{padding-right:1rem}.toc a{font-weight:400;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.dark .toc a{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}[dir=rtl] .toc ul>li{margin-right:0}.highlight-wrapper{display:block}.highlight{position:relative;z-index:0}.highlight:hover>.copy-button{visibility:visible}.copy-button{visibility:hidden;position:absolute;top:0;right:0;z-index:10;width:5rem;cursor:pointer;white-space:nowrap;border-bottom-left-radius:.375rem;border-top-right-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-200),var(--tw-bg-opacity));padding-top:.25rem;padding-bottom:.25rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity));opacity:.9}.dark .copy-button{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.copy-button:hover,.copy-button:focus,.copy-button:active,.copy-button:active:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.dark .copy-button:hover,.dark .copy-button:focus,.dark .copy-button:active,.dark .copy-button:active:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.copy-textarea{position:absolute;z-index:-10;opacity:.05}.prose .chroma{position:static;border-radius:.375rem;--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-50),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}.dark .prose .chroma{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.chroma .lntd,.chroma .lntd pre{margin:0;border-style:none;padding:0;vertical-align:top}.chroma .lntable{display:block;width:auto;overflow:hidden;padding-left:1rem;padding-right:1rem;padding-top:.75rem;padding-bottom:.75rem;font-size:1rem;line-height:1.5rem;border-spacing:0}.chroma .hl{margin-left:-1rem;margin-right:-1rem;display:block;width:auto;--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity));padding-left:1rem;padding-right:1rem}.dark .chroma .hl{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.chroma .lntd .hl{margin:0;padding:0}.chroma .lnt,.chroma .ln{margin-right:.4em;padding-left:.4em;padding-right:.4em;padding-top:0;padding-bottom:0;--tw-text-opacity:1;color:rgba(var(--color-neutral-600),var(--tw-text-opacity))}.dark .chroma .lnt,.dark .chroma .ln{--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .nc,.chroma .fm,.chroma .nn,.chroma .vc,.chroma .o{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.dark .chroma .k,.dark .chroma .kd,.dark .chroma .kn,.dark .chroma .kp,.dark .chroma .kr,.dark .chroma .nc,.dark .chroma .fm,.dark .chroma .nn,.dark .chroma .vc,.dark .chroma .o{--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.chroma .kc{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.dark .chroma .kc{--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .kt,.chroma .nv,.chroma .vi,.chroma .vm,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.dark .chroma .kt,.dark .chroma .nv,.dark .chroma .vi,.dark .chroma .vm,.dark .chroma .m,.dark .chroma .mb,.dark .chroma .mf,.dark .chroma .mh,.dark .chroma .mi,.dark .chroma .il,.dark .chroma .mo{--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}.chroma .n,.chroma .nd,.chroma .ni,.chroma .nl{--tw-text-opacity:1;color:rgba(var(--color-secondary-900),var(--tw-text-opacity))}.dark .chroma .n,.dark .chroma .nd,.dark .chroma .ni,.dark .chroma .nl{--tw-text-opacity:1;color:rgba(var(--color-secondary-200),var(--tw-text-opacity))}.chroma .na,.chroma .nb,.chroma .bp,.chroma .nx,.chroma .py,.chroma .nt{--tw-text-opacity:1;color:rgba(var(--color-secondary-800),var(--tw-text-opacity))}.dark .chroma .na,.dark .chroma .nb,.dark .chroma .bp,.dark .chroma .nx,.dark .chroma .py,.dark .chroma .nt{--tw-text-opacity:1;color:rgba(var(--color-secondary-300),var(--tw-text-opacity))}.chroma .no,.chroma .ne,.chroma .vg{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.dark .chroma .no,.dark .chroma .ne,.dark .chroma .vg{--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .nf{--tw-text-opacity:1;color:rgba(var(--color-secondary-600),var(--tw-text-opacity))}.dark .chroma .nf{--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .l,.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .s1,.chroma .gi,.chroma .go,.chroma .gp{--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}.dark .chroma .l,.dark .chroma .ld,.dark .chroma .s,.dark .chroma .sa,.dark .chroma .sb,.dark .chroma .sc,.dark .chroma .dl,.dark .chroma .sd,.dark .chroma .s2,.dark .chroma .sh,.dark .chroma .si,.dark .chroma .sx,.dark .chroma .s1,.dark .chroma .gi,.dark .chroma .go,.dark .chroma .gp{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .se{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-secondary-400),var(--tw-text-opacity))}.dark .chroma .se{--tw-text-opacity:1;color:rgba(var(--color-secondary-500),var(--tw-text-opacity))}.chroma .sr,.chroma .ss{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-800),var(--tw-text-opacity))}.dark .chroma .sr,.dark .chroma .ss{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.chroma .ow{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark .chroma .ow{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.chroma .c,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.dark .chroma .c,.dark .chroma .cm,.dark .chroma .c1,.dark .chroma .cs,.dark .chroma .cp,.dark .chroma .cpf{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ch{font-weight:600;font-style:italic;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.dark .chroma .ch{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.chroma .ge{font-style:italic}.chroma .gh{font-weight:600;--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gs{font-weight:600}.chroma .gu,.chroma .gt{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.chroma .gl{-webkit-text-decoration-line:underline;text-decoration-line:underline}.thumbnail{min-width:300px;height:180px;background-repeat:no-repeat;background-size:cover;background-position:50%}.single_hero_basic{background-repeat:no-repeat;background-size:cover;background-position:50%}.single_hero_round{max-height:50vh;-o-object-fit:cover;object-fit:cover}.single_hero_background{background-repeat:no-repeat;background-size:cover;background-position:50%;width:calc(100% + 40px);z-index:-10;margin-left:-20px}.hero_gradient{width:100%;height:100%}.thumbnailshadow{box-shadow:5px 5px 20px 1px rgba(0,0,0,.3)}@media(min-width:640px){.thumbnail{min-width:100%;height:180px}.article{flex-wrap:wrap}}@media(min-width:853px){.thumbnail{min-width:300px;min-height:180px;height:auto}.article{flex-wrap:nowrap}}.max-w-prose{max-width:75ch}.first\:mt-8:first-child{margin-top:2rem}.hover\:border-transparent:hover{border-color:transparent}.hover\:bg-primary-600:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600),var(--tw-bg-opacity))}.hover\:bg-primary-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.hover\:bg-primary-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))}.hover\:\!bg-primary-500:hover{--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-500),var(--tw-bg-opacity))!important}.hover\:text-primary-600:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.hover\:text-primary-700:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-700),var(--tw-text-opacity))}.hover\:text-primary-500:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-500),var(--tw-text-opacity))}.hover\:text-neutral:hover{--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}.hover\:text-primary-400:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.hover\:underline:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.hover\:decoration-primary-400:hover{-webkit-text-decoration-color:rgba(var(--color-primary-400),1);text-decoration-color:rgba(var(--color-primary-400),1)}.hover\:decoration-2:hover{text-decoration-thickness:2px}.hover\:underline-offset-2:hover{text-underline-offset:2px}.focus\:translate-y-0:focus{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.focus\:bg-primary-100:focus{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100),var(--tw-bg-opacity))}.focus\:outline-dotted:focus{outline-style:dotted}.focus\:outline-2:focus{outline-width:2px}.focus\:outline-transparent:focus{outline-color:transparent}.group:hover .group-hover\:text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600),var(--tw-text-opacity))}.group:hover .group-hover\:text-primary-300{--tw-text-opacity:1;color:rgba(var(--color-primary-300),var(--tw-text-opacity))}.group:hover .group-hover\:underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.group:hover .group-hover\:decoration-primary-500{-webkit-text-decoration-color:rgba(var(--color-primary-500),1);text-decoration-color:rgba(var(--color-primary-500),1)}.group:hover .group-hover\:opacity-100{opacity:1}[dir=ltr] .ltr\:right-0{right:0}[dir=ltr] .ltr\:-left-6{left:-1.5rem}[dir=ltr] .ltr\:ml-2{margin-left:.5rem}[dir=ltr] .ltr\:mr-4{margin-right:1rem}[dir=ltr] .ltr\:-ml-5{margin-left:-1.25rem}[dir=ltr] .ltr\:mr-14{margin-right:3.5rem}[dir=ltr] .ltr\:block{display:block}[dir=ltr] .ltr\:inline{display:inline}[dir=ltr] .ltr\:hidden{display:none}[dir=ltr] .ltr\:border-l{border-left-width:1px}[dir=ltr] .ltr\:pr-2{padding-right:.5rem}[dir=ltr] .ltr\:pl-5{padding-left:1.25rem}[dir=ltr] .ltr\:pr-3{padding-right:.75rem}[dir=ltr] .ltr\:text-right{text-align:right}[dir=rtl] .rtl\:left-0{left:0}[dir=rtl] .rtl\:-right-6{right:-1.5rem}[dir=rtl] .rtl\:mr-2{margin-right:.5rem}[dir=rtl] .rtl\:ml-4{margin-left:1rem}[dir=rtl] .rtl\:-mr-5{margin-right:-1.25rem}[dir=rtl] .rtl\:ml-14{margin-left:3.5rem}[dir=rtl] .rtl\:block{display:block}[dir=rtl] .rtl\:inline{display:inline}[dir=rtl] .rtl\:hidden{display:none}[dir=rtl] .rtl\:border-r{border-right-width:1px}[dir=rtl] .rtl\:pl-2{padding-left:.5rem}[dir=rtl] .rtl\:pr-5{padding-right:1.25rem}[dir=rtl] .rtl\:pl-3{padding-left:.75rem}[dir=rtl] .rtl\:text-left{text-align:left}.dark .dark\:prose-invert{--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.dark .dark\:prose-invert :where(a):not(:where([class~=not-prose] *)){-webkit-text-decoration-color:rgba(var(--color-neutral-600),1);text-decoration-color:rgba(var(--color-neutral-600),1)}.dark .dark\:prose-invert :where(kbd):not(:where([class~=not-prose] *)){color:rgba(var(--color-neutral-200),1);background-color:rgba(var(--color-neutral-700),1)}.dark .dark\:prose-invert :where(mark):not(:where([class~=not-prose] *)){background-color:rgba(var(--color-secondary-400),1)}.dark .dark\:flex{display:flex}.dark .dark\:hidden{display:none}.dark .dark\:border-neutral-600{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-600),var(--tw-border-opacity))}.dark .dark\:border-neutral-700{--tw-border-opacity:1;border-color:rgba(var(--color-neutral-700),var(--tw-border-opacity))}.dark .dark\:border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--color-primary-600),var(--tw-border-opacity))}.dark .dark\:bg-neutral-800{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-800),var(--tw-bg-opacity))}.dark .dark\:bg-neutral-600{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-600),var(--tw-bg-opacity))}.dark .dark\:bg-neutral-800\/50{background-color:rgba(var(--color-neutral-800),.5)}.dark .dark\:bg-primary-400{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}.dark .dark\:bg-neutral-900\/50{background-color:rgba(var(--color-neutral-900),.5)}.dark .dark\:bg-neutral-700{--tw-bg-opacity:1;background-color:rgba(var(--color-neutral-700),var(--tw-bg-opacity))}.dark .dark\:bg-primary-900{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.dark .dark\:bg-primary-800{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-800),var(--tw-bg-opacity))}.dark .dark\:from-neutral-800{--tw-gradient-from:rgba(var(--color-neutral-800), 1);--tw-gradient-to:rgba(var(--color-neutral-800), 0);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.dark .dark\:from-primary-600{--tw-gradient-from:rgba(var(--color-primary-600), 1);--tw-gradient-to:rgba(var(--color-primary-600), 0);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.dark .dark\:to-neutral-300{--tw-gradient-to:rgba(var(--color-neutral-300), 1)}.dark .dark\:to-secondary-800{--tw-gradient-to:rgba(var(--color-secondary-800), 1)}.dark .dark\:text-neutral-500{--tw-text-opacity:1;color:rgba(var(--color-neutral-500),var(--tw-text-opacity))}.dark .dark\:text-neutral{--tw-text-opacity:1;color:rgba(var(--color-neutral),var(--tw-text-opacity))}.dark .dark\:text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark .dark\:text-neutral-300{--tw-text-opacity:1;color:rgba(var(--color-neutral-300),var(--tw-text-opacity))}.dark .dark\:text-neutral-400{--tw-text-opacity:1;color:rgba(var(--color-neutral-400),var(--tw-text-opacity))}.dark .dark\:text-neutral-800{--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.dark .dark\:text-neutral-100{--tw-text-opacity:1;color:rgba(var(--color-neutral-100),var(--tw-text-opacity))}.dark .dark\:text-neutral-200{--tw-text-opacity:1;color:rgba(var(--color-neutral-200),var(--tw-text-opacity))}.dark .dark\:mix-blend-multiply{mix-blend-mode:multiply}.dark .dark\:hover\:bg-primary-900:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.dark .dark\:hover\:bg-primary-400:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400),var(--tw-bg-opacity))}.dark .dark\:hover\:\!bg-primary-700:hover{--tw-bg-opacity:1 !important;background-color:rgba(var(--color-primary-700),var(--tw-bg-opacity))!important}.dark .dark\:hover\:text-primary-400:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark .dark\:hover\:text-neutral-800:hover{--tw-text-opacity:1;color:rgba(var(--color-neutral-800),var(--tw-text-opacity))}.dark .dark\:focus\:bg-primary-900:focus{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900),var(--tw-bg-opacity))}.dark .group:hover .dark\:group-hover\:text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400),var(--tw-text-opacity))}.dark .group:hover .dark\:group-hover\:text-neutral-700{--tw-text-opacity:1;color:rgba(var(--color-neutral-700),var(--tw-text-opacity))}@media print{.print\:hidden{display:none}}@media(min-width:640px){.sm\:mb-0{margin-bottom:0}.sm\:mt-16{margin-top:4rem}.sm\:w-1\/2{width:50%}.sm\:flex-row{flex-direction:row}.sm\:overflow-hidden{overflow:hidden}.sm\:p-6{padding:1.5rem}.sm\:px-14{padding-left:3.5rem;padding-right:3.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.sm\:py-24{padding-top:6rem;padding-bottom:6rem}.sm\:pt-10{padding-top:2.5rem}.sm\:pl-6{padding-left:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}[dir=ltr] .ltr\:sm\:mr-7{margin-right:1.75rem}[dir=ltr] .ltr\:sm\:last\:mr-0:last-child{margin-right:0}[dir=rtl] .rtl\:sm\:ml-7{margin-left:1.75rem}[dir=rtl] .rtl\:sm\:last\:ml-0:last-child{margin-left:0}}@media(min-width:853px){.md\:mr-7{margin-right:1.75rem}.md\:mt-0{margin-top:0}.md\:ml-12{margin-left:3rem}.md\:-mr-16{margin-right:-4rem}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-56{height:14rem}.md\:w-1\/3{width:33.333333%}.md\:w-auto{width:auto}.md\:justify-start{justify-content:flex-start}.md\:p-\[10vh\]{padding:10vh}.md\:px-24{padding-left:6rem;padding-right:6rem}}@media(min-width:1024px){.lg\:absolute{position:absolute}.lg\:relative{position:relative}.lg\:sticky{position:-webkit-sticky;position:sticky}.lg\:top-10{top:2.5rem}.lg\:left-0{left:0}.lg\:order-last{order:9999}.lg\:m-0{margin:0}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-72{height:18rem}.lg\:h-full{height:100%}.lg\:w-1\/4{width:25%}.lg\:w-auto{width:auto}.lg\:max-w-xs{max-width:20rem}.lg\:max-w-7xl{max-width:80rem}.lg\:max-w-none{max-width:none}.lg\:grid-flow-col-dense{grid-auto-flow:column dense}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:gap-24{gap:6rem}.lg\:p-\[12vh\]{padding:12vh}.lg\:px-32{padding-left:8rem;padding-right:8rem}.lg\:py-32{padding-top:8rem;padding-bottom:8rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-16{padding-top:4rem;padding-bottom:4rem}.lg\:px-0{padding-left:0;padding-right:0}[dir=ltr] .ltr\:lg\:pl-8{padding-left:2rem}[dir=rtl] .rtl\:lg\:pr-8{padding-right:2rem}}@media(min-width:1280px){.xl\:w-1\/4{width:25%}} \ No newline at end of file diff --git a/events/index.html b/events/index.html index 2b7ea5f..9a7563e 100644 --- a/events/index.html +++ b/events/index.html @@ -1,13 +1,10 @@ -Events · SRE MUC - - +Events · SRE MUC + -
Skip to main content
SRE MUC -SRE MUC
- -

Events

2024


SRE Munich at Jambit 2024
·478 words·3 mins
SRE+Grafana Munich at nordcloud 2024
·618 words·3 mins

2023


SRE Munich at Google 2023
·546 words·3 mins
SRE Munich at Netlight 2023
·615 words·3 mins
SRE Munich at MaibornWolff 2023
·528 words·3 mins

2022


SRE Munich at Sixt 2022
·429 words·3 mins

2021


SRE Munich Spring Online Event 2021
·267 words·2 mins

2020


SRE Munich Fall Online Event 2020
·238 words·2 mins
SRE Munich Spring Online Event 2020
·305 words·2 mins
SRE Munich at Google 2020
·605 words·3 mins

2019


SRE Munich at Google 2019
·475 words·3 mins
SRE Munich at EGYM 2019
·504 words·3 mins

2018


SRE Munich at HolidayCheck 2018
·283 words·2 mins
SRE Munich at EGYM 2018
·345 words·2 mins
SRE Munich at EGYM 2018
·330 words·2 mins
\ No newline at end of file +
Skip to main content

Events

2024

SRE Munich at Celonis 2024
·792 words·4 mins
SRE Munich at Jambit 2024
·478 words·3 mins
SRE+Grafana Munich at nordcloud 2024
·617 words·3 mins

2023

SRE Munich at Google 2023
·546 words·3 mins
SRE Munich at Netlight 2023
·615 words·3 mins
SRE Munich at MaibornWolff 2023
·528 words·3 mins

2022

SRE Munich at Sixt 2022
·429 words·3 mins

2021

SRE Munich Spring Online Event 2021
·267 words·2 mins

2020

SRE Munich Fall Online Event 2020
·238 words·2 mins
SRE Munich Spring Online Event 2020
·305 words·2 mins
SRE Munich at Google 2020
·605 words·3 mins

2019

SRE Munich at Google 2019
·473 words·3 mins
SRE Munich at EGYM 2019
·504 words·3 mins

2018

SRE Munich at HolidayCheck 2018
·279 words·2 mins
SRE Munich at EGYM 2018
·336 words·2 mins
SRE Munich at EGYM 2018
·324 words·2 mins
\ No newline at end of file diff --git a/events/index.xml b/events/index.xml index 93c514c..8f718e7 100644 --- a/events/index.xml +++ b/events/index.xml @@ -1,4 +1,4 @@ -Events on SRE MUChttps://muc.sre.xyz/events/Recent content in Events on SRE MUCHugo -- gohugo.ioenGroup artwork by <a href='https://kickoke.com/'> Tina Lüdtke</a> based on <a href='http://kcgreendotcom.com/index.html'>K. C. Green</a>'s famous comic <a href='http://knowyourmeme.com/memes/this-is-fine'>'This Is Fine'</a>.Tue, 19 Mar 2024 12:44:21 +0000SRE Munich at Jambit 2024https://muc.sre.xyz/events/sre-munich-spring-event-2024/Tue, 19 Mar 2024 12:44:21 +0000https://muc.sre.xyz/events/sre-munich-spring-event-2024/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 25th from 6:30 PM to 9:30 PM CEST at Jambit in Munich. Let&rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!SRE+Grafana Munich at nordcloud 2024https://muc.sre.xyz/events/sre-munich-winter-event-2024/Wed, 07 Feb 2024 07:30:00 +0200https://muc.sre.xyz/events/sre-munich-winter-event-2024/We&rsquo;re co-hosting with Grafana &amp; Friends meetup group https://www.meetup.com/grafana-and-friends-munich/ . Come and see new faces! +Events on SRE MUChttps://muc.sre.xyz/events/Recent content in Events on SRE MUCHugo -- gohugo.ioenGroup artwork by <a href='https://kickoke.com/'> Tina Lüdtke</a> based on <a href='http://kcgreendotcom.com/index.html'>K. C. Green</a>'s famous comic <a href='http://knowyourmeme.com/memes/this-is-fine'>'This Is Fine'</a>.Sun, 07 Jul 2024 07:30:00 +0200SRE Munich at Celonis 2024https://muc.sre.xyz/events/sre-munich-summer-event-2024/Sun, 07 Jul 2024 07:30:00 +0200https://muc.sre.xyz/events/sre-munich-summer-event-2024/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for July 10th. This time around we will be meeting at Celonis . Let&rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!SRE Munich at Jambit 2024https://muc.sre.xyz/events/sre-munich-spring-event-2024/Tue, 19 Mar 2024 12:44:21 +0000https://muc.sre.xyz/events/sre-munich-spring-event-2024/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 25th from 6:30 PM to 9:30 PM CEST at Jambit in Munich. Let&rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!SRE+Grafana Munich at nordcloud 2024https://muc.sre.xyz/events/sre-munich-winter-event-2024/Wed, 07 Feb 2024 07:30:00 +0200https://muc.sre.xyz/events/sre-munich-winter-event-2024/We&rsquo;re co-hosting with Grafana &amp; Friends meetup group https://www.meetup.com/grafana-and-friends-munich/. Come and see new faces! This time around we will be meeting at Nordcloud in their Highlight Towers location Let&rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!SRE Munich at Google 2023https://muc.sre.xyz/events/sre-munich-summer-fall-event-2023/Thu, 07 Sep 2023 18:01:53 +0000https://muc.sre.xyz/events/sre-munich-summer-fall-event-2023/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 26th. This time around we will be meeting at Google in their Isarvalley event space!SRE Munich at Netlight 2023https://muc.sre.xyz/events/sre-munich-spring-event-2023/Tue, 23 May 2023 16:41:03 +0200https://muc.sre.xyz/events/sre-munich-spring-event-2023/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for June 13th. This time around we will be meeting at Netlight as they have graciously agreed to host us!SRE Munich at MaibornWolff 2023https://muc.sre.xyz/events/sre-munich-winter-event-2023/Mon, 13 Feb 2023 07:30:00 +0200https://muc.sre.xyz/events/sre-munich-winter-event-2023/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for February 13th. This time around we will be meeting at MaibornWolff as they have graciously agreed to host us!SRE Munich at Sixt 2022https://muc.sre.xyz/events/sre-munich-fall-event-2022/Thu, 13 Oct 2022 18:30:00 +0200https://muc.sre.xyz/events/sre-munich-fall-event-2022/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for October 13th. diff --git a/events/sre-munich-autumn-event-2019/index.html b/events/sre-munich-autumn-event-2019/index.html index 30fc0d0..271e599 100644 --- a/events/sre-munich-autumn-event-2019/index.html +++ b/events/sre-munich-autumn-event-2019/index.html @@ -1,26 +1,21 @@ -SRE Munich at Google 2019 · SRE MUC - - +SRE Munich at Google 2019 · SRE MUC +
  1. Events/

SRE Munich at Google 2019

·475 words·3 mins· -

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.

Agenda #

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup
  • 7:10 pm Talk 1: Recap SREcon 2019 EMEA (Ingo Averdunk, Pavlos Ratis)
  • 7:40 pm Short break
  • 7:45 pm Talk 2: Scaling to support thousands of BGP peerings in a SaaS environment (Costas Drogos)
  • 8:15 pm SRE Quiz (!) + Networking + Drinks
  • 9:00 pm Leave happy and inspired :)

Speakers #

  • Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud.
  • Dan is an Engineering Manager at Google and future space traveler.
  • Pavlos Ratis is a Site Reliability Engineer at HolidayCheck and maintainer of the Awesome SRE repository ( -https://github.com/dastergon/awesome-sre) -.
  • Costas is working as a Site Reliability Engineer for Kentik’s Operations team, maintaining a sizeable hybrid infrastructure that hosts Kentik’s realtime, SaaS network analytics platform. His interests lie where the network, systems and software meet and lately he’s finding DevOps and SRE paradigms to allow for a perfect combination of the above. Lately he’s trying to get more familiar with the Cloud side of things to in order to increase the uniformity in Kentik’s hybrid infrastructure, but for now he’s mostly trying to read behind the buzzwords.

Abstracts #

  • Recap SREcon 2019 EMEA: Once a year, SREcon gathers the community of SREs to share experience and learn from each other. This will be a recap of SREcon EMEA 2019 (October 02-04, Dublin, Ireland) . Key themes of the conference were Comprehension, Understandability, and Predictability. Ingo and Pavlos will share their observations from the conference, and highlight several sessions worth listening to as a replay.
  • Kentik utilizes multiple auxiliary sources to enrich ingested flow, with the most prominent of them being data sourced from BGP peerings. -In this presentation we’ll go through all the different generations of the setup, the challenges and the requirements we had to work with at each step of process, in order to be able to scale to more than 4000 IPv4 + IPv6 BGP sessions today.

Participation #

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you’d like to present!

Slides #

There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule

Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!

\ No newline at end of file diff --git a/events/sre-munich-fall-event-2022/index.html b/events/sre-munich-fall-event-2022/index.html index 4d2b4cc..8fcf27d 100644 --- a/events/sre-munich-fall-event-2022/index.html +++ b/events/sre-munich-fall-event-2022/index.html @@ -1,23 +1,20 @@ -SRE Munich at Sixt 2022 · SRE MUC - - +SRE Munich at Sixt 2022 · SRE MUC +
  1. Events/

SRE Munich at Sixt 2022

·429 words·3 mins· -

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for October 13th.

After many months of virtual events and meetings, this edition finally reverts to an in-person event. We will learn about the SRE practice in Munich, as well as key themes of the global SRE community. On this day, want to engage with and learn from each other, to reduce the risk of disasters (hint !).

Agenda #

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Welcome to SREmuc
  • 7:10 pm Talk 1: SRE at SIXT at a glance (Andreas Klinger, SIXT)
  • 7:45 pm Short break
  • 8:00 pm Talk 2: How Google got to rolling Linux releases for Desktops (Kordian Bruck, Google)
  • 8:30 pm Talk 3: Recap SREcon Americas (Ingo Averdunk, IBM)
  • 9:00 pm Networking + Drinks
  • 9:30 pm Leave happy and inspired :)

We would like to thank SIXT Autovermietung for sponsoring this event.

Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!

Speakers and Abstracts #

Talk 1 #

Andreas Klinger and team will give us an overview on SRE at SIXT. Starting with the overall roadmap of SRE at SIXT, Andreas will zoom into details on platform security (AMI re-rolling, Image scanning via Crowdstrike), deployments via CI Bot and service discovery, as well as the use of OPA for Kafka Authorization and Authentication.

Talk 2 #

Kordian Bruck will present How Google got to rolling Linux releases for Desktops. At Google, we run large production fleets that serve Google products like YouTube and Gmail. To support all our employees, including engineers, we also run a sizable corporate fleet with hundreds of thousands of devices across multiple platforms, models, and locations. To let each Googler work in the environment they are most productive in, we operate many OS-platforms including a Linux system. For a long time, our internal-facing Linux distribution, Goobuntu, was based off of Ubuntu LTS releases. In 2018 we completed a move to a rolling release model based on Debian.

Talk 3 #

Following the theme from previous years, Ingo Averdunk will recap SREcon 2022 Americas. Just like speed dating, Ingo will attempt to collapse 3 conference days into a 30 min session. The objective is to provide food for thought, and to encourage listening to the playback of interesting sessions.

Legal #

There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded or photographed.

\ No newline at end of file diff --git a/events/sre-munich-fall-online-event-2020/index.html b/events/sre-munich-fall-online-event-2020/index.html index c5a8329..035be66 100644 --- a/events/sre-munich-fall-online-event-2020/index.html +++ b/events/sre-munich-fall-online-event-2020/index.html @@ -1,21 +1,18 @@ -SRE Munich Fall Online Event 2020 · SRE MUC - - +SRE Munich Fall Online Event 2020 · SRE MUC + -
  1. Events/

SRE Munich Fall Online Event 2020

·238 words·2 mins· -

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 24th. We will be taking things online again due to the ongoing COVID-19 situation.

As we are building the agenda right now, please come back to see what we have lined up for this event.

Agenda #

  • 18:30 Join the online meeting
  • 18:45 Intro
  • 19:00 Chaos improves Reliability. Resistance is futile. How embracing Chaos Engineering helps building reliable mission critical workloads. Haytham Elkhoja (IBM)
  • 19:45 Open floor, discussion, and questions around the topic
  • 20:30 End

Speakers #

  • Haytham Elkhoja is the Chief Architect for IBM Always On . As the technical leader of the Always On practice at IBM, Haytham works with large customers to re-architect mission-critical applications to resilient cloud-native architectures with the aim of achieving the highest levels of service availability, resiliency, and reliability by incorporating continuous availability, site reliability engineering, chaos engineering, cloud platforms and infrastructure automation.

Participation #

We’re always looking for 20-35 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you’d like to present!

There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.

Spread The Word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!

\ No newline at end of file diff --git a/events/sre-munich-launch-event-2018/index.html b/events/sre-munich-launch-event-2018/index.html index a93c9f8..0958c39 100644 --- a/events/sre-munich-launch-event-2018/index.html +++ b/events/sre-munich-launch-event-2018/index.html @@ -1,24 +1,15 @@ -SRE Munich at EGYM 2018 · SRE MUC - - +SRE Munich at EGYM 2018 · SRE MUC + -
  1. Events/

SRE Munich at EGYM 2018

·330 words·2 mins· -

We’re excited to announce the first Meetup of the Site Reliability Engineering Munich group. We are overwhelmed by the number of people who joined the group, even before we had the time to advertise it. You guys rock! -Our first event shall be known as the launch event and may contain bugs :) Feedback welcome!

Agenda #

  • 6:30 pm Get Together with food and drinks, sponsored by eGym GmbH
  • 7:00 pm Welcome and Kick-off (Ingo, danrl)
  • 7:30 pm Recap - SREcon 2018 (Ingo, danrl)
  • 8:00 pm Continuous performance profiling in production environments (Dmitri Melikyan)
  • 8:30 pm Post Mortem of the Month / Tales from On-call (Ingo)
  • 8:35 pm Networking + Drinks
  • 9:00 pm Go home inspired! [End of Event ;)]

Speakers #

  • Dmitri is a software engineer and the founder of StackImpact, where he is working on performance profiling and monitoring tools.
  • Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud.
  • Dan is a Technical Lead SRE at eGym, first-time Meetup organizer, and future space traveler.

Participation #

We’re always looking for 20-30 minute technical talks (and 5-8 minute lightning talks) relating to the very broad field of Reliability Engineering. Get in touch with the organizers if you’d like to present!

Location #

eGym GmbH, Prannerstr. 2-4, 80333 München

Public Transportation #

Slides #

Recordings #

There may be audio and video recordings of talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.

Spread the word! Feel free to refer to this Meetup via #sremuc on social media!

\ No newline at end of file diff --git a/events/sre-munich-nikolaus-winter-event-2018/index.html b/events/sre-munich-nikolaus-winter-event-2018/index.html index 2ad8476..fa0d6ac 100644 --- a/events/sre-munich-nikolaus-winter-event-2018/index.html +++ b/events/sre-munich-nikolaus-winter-event-2018/index.html @@ -1,27 +1,20 @@ -SRE Munich at HolidayCheck 2018 · SRE MUC - - +SRE Munich at HolidayCheck 2018 · SRE MUC +
  1. Events/

SRE Munich at HolidayCheck 2018

·283 words·2 mins· -

Hey folks! We’re excited to announce the Nikolaus Winter Event of the Site Reliability Engineering Munich Meetup group.

Agenda #

  • 7:00 pm Get Together with food and drinks, sponsored by Holidaycheck
  • 7:30 pm Welcome, Sponsor Message (Dan, Ingo, Pavlos)
  • 7:40 pm Implementing Distributed Consensus (Dan)
  • 8:30 pm Game & Prizes! “How fast are computers?” (Ingo)
  • 9:05 pm Post Mortem of the Month / Tales from On-call (Everyone)
  • 9:10 pm Networking + Drinks
  • 9:30 pm Leave happy and inspired :)

Speakers #

  • Pavlos Ratis is a Site Reliability Engineer at HolidayCheck in Munich and maintains the Awesome SRE repository ( -https://github.com/dastergon/awesome-sre) -.
  • Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud.
  • Dan is Team Lead SRE & Infrastructure at eGym and dreams of space travel.

Participation #

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you’d like to present!

Location #

HolidayCheck Munich Office ( -https://goo.gl/maps/AYv9K3osBr62 -)

Public Transportation #

There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule

Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!

\ No newline at end of file diff --git a/events/sre-munich-spring-event-2023/index.html b/events/sre-munich-spring-event-2023/index.html index 638d8e4..6bb0060 100644 --- a/events/sre-munich-spring-event-2023/index.html +++ b/events/sre-munich-spring-event-2023/index.html @@ -1,38 +1,35 @@ -SRE Munich at Netlight 2023 · SRE MUC - - +SRE Munich at Netlight 2023 · SRE MUC +
  1. Events/

SRE Munich at Netlight 2023

·615 words·3 mins· -

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for June 13th.

This time around we will be meeting at Netlight as they have graciously agreed to host us! +This time around we will be meeting at Netlight as they have graciously agreed to host us!">

  1. Events/

SRE Munich at Netlight 2023

·615 words·3 mins· +
SRE Meetup Munich
Author
SRE Meetup Munich
Table of Contents

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for June 13th.

This time around we will be meeting at Netlight as they have graciously agreed to host us! Lets all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!). -Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.

We would like to thank Netlight Consulting for sponsoring this event and catering it!

Agenda #

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Welcome to SREmuc
  • 7:10 pm Talk 1: Exercising Effective Incident Response and Disaster Recovery Plan via Gamedays (Thanos Amoutzias, VW Elli)
  • 7:30 pm Talk 2: Building Resilient Event-Driven Systems with GCP Pub/Sub: Key Reliability Considerations (Saadi Myftija, Netlight)
  • 8:00 pm Short break
  • 8:15 pm Talk 3: Eliminating human error using self-service GitOps with Crossplane (Stéphane Di Cesare and Christopher Haar, DKB)
  • 8:45 pm Networking + Drinks
  • 9:30 pm Leave happy and inspired :)

Speakers #

  • Thanos Amoutzias is a Software Engineer and SRE Lead at VW Elli. He is passionate about building reliable services and delivering impactful products. You can find him on LinkedIn and in the mountains.
  • Saadi Myftija is a consultant at Netlight, focusing on backend and cloud engineering. He’s currently working as tech lead in the EV charging platform team at VW Elli.
  • Stéphane Di Cesare is a Senior Platform Engineer at DKB, where he is focusing on improving the developer experience and the developer acceptance of the internal platform. He also has a consulting background.
  • Christopher Haar is Platform Tech Lead at DKB, where he is responsible of determining the technologies used by the internal platform. He is also one of the maintainers of the Crossplane open source project.

Abstracts #

Talk 1 #

How can I start practicing Gamedays at my company? In this talk we are going to +Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.

We would like to thank Netlight Consulting for sponsoring this event and catering it!

Agenda
#

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Welcome to SREmuc
  • 7:10 pm Talk 1: Exercising Effective Incident Response and Disaster Recovery Plan via Gamedays (Thanos Amoutzias, VW Elli)
  • 7:30 pm Talk 2: Building Resilient Event-Driven Systems with GCP Pub/Sub: Key Reliability Considerations (Saadi Myftija, Netlight)
  • 8:00 pm Short break
  • 8:15 pm Talk 3: Eliminating human error using self-service GitOps with Crossplane (Stéphane Di Cesare and Christopher Haar, DKB)
  • 8:45 pm Networking + Drinks
  • 9:30 pm Leave happy and inspired :)

Speakers
#

  • Thanos Amoutzias is a Software Engineer and SRE Lead at VW Elli. He is passionate about building reliable services and delivering impactful products. You can find him on LinkedIn and in the mountains.
  • Saadi Myftija is a consultant at Netlight, focusing on backend and cloud engineering. He’s currently working as tech lead in the EV charging platform team at VW Elli.
  • Stéphane Di Cesare is a Senior Platform Engineer at DKB, where he is focusing on improving the developer experience and the developer acceptance of the internal platform. He also has a consulting background.
  • Christopher Haar is Platform Tech Lead at DKB, where he is responsible of determining the technologies used by the internal platform. He is also one of the maintainers of the Crossplane open source project.

Abstracts
#

Talk 1
#

How can I start practicing Gamedays at my company? In this talk we are going to dive deeper into the organization of the event, from identifying incidents to run, execution and logistics to disaster recovery. Lastly, we will have a look -at results and feedback we have received.

Slides /slides/2023_06/gamedays.pdf

Talk 2 #

Event-driven architecture (EDA) is a common pattern in building modern +at results and feedback we have received.

Slides /slides/2023_06/gamedays.pdf

Talk 2
#

Event-driven architecture (EDA) is a common pattern in building modern service-oriented applications. It helps decoupling system components, which enables scaling, updating and deploying them independently. However, EDA comes with its own set of challenges and trade-offs. In this presentation we’ll talk about reliability considerations around GCP Pub/Sub, our event broker of choice to implement EDA. We’ll mainly focus on publisher reliability and how to -monitor it, dead-letter queues and message retrying.

Talk 3 #

In this talk, we are going to present what the typical challenges of a Platform +monitor it, dead-letter queues and message retrying.

Talk 3
#

In this talk, we are going to present what the typical challenges of a Platform team are. We will highlight the importance of self-service GitOps in a banking environment, and will explain how these principles are implemented at DKB, -using the open source projects Crossplane and Flux.

Photos #

photos
photos
photos
photos
photos
photos
photos
photos

Participation #

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you’d like to present!

Slides #

Will be added after the event

There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. -By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule

Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!

SRE Meetup Munich
Author
SRE Meetup Munich

+using the open source projects Crossplane and Flux.

Photos
#

photos
photos
photos
photos
photos
photos
photos
photos

Participation
#

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you’d like to present!

Slides
#

Will be added after the event

Legal#

There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. +By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule

Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!

\ No newline at end of file + \ No newline at end of file diff --git a/events/sre-munich-spring-event-2024/index.html b/events/sre-munich-spring-event-2024/index.html index c559cd7..b47fe7b 100644 --- a/events/sre-munich-spring-event-2024/index.html +++ b/events/sre-munich-spring-event-2024/index.html @@ -1,29 +1,29 @@ -SRE Munich at Jambit 2024 · SRE MUC - - +SRE Munich at Jambit 2024 · SRE MUC + -
  1. Events/

SRE Munich at Jambit 2024

·478 words·3 mins· -

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 25th from 6:30 PM to 9:30 PM CEST at Jambit in Munich. +

  1. Events/

SRE Munich at Jambit 2024

·478 words·3 mins· +
SRE Meetup Munich
Author
SRE Meetup Munich
Table of Contents

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 25th from 6:30 PM to 9:30 PM CEST at Jambit in Munich. Let’s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!). Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters. Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag. -You can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)

Agenda #

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Welcome to SREmuc
  • 7:10 pm Talk 1: Simplicity in the Source (Markus Teich, Google)
  • 7:40 pm Talk 2: Enough Go, what about Rust? (Mario Ortiz Manero, Lyft)
  • 8:10pm Talk 3: Recap SREcon Americas (Ingo Averdunk, IBM)
  • 8:45 pm Networking + Drinks
  • 9:00 pm Leave happy and inspired :)

Abstracts #

Talk 1: Simplicity in the Source (Markus Teich, Google) #

Markus has been an SRE and software engineer at Google for close to 7 years. +You can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)

Agenda
#

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Welcome to SREmuc
  • 7:10 pm Talk 1: Simplicity in the Source (Markus Teich, Google)
  • 7:40 pm Talk 2: Enough Go, what about Rust? (Mario Ortiz Manero, Lyft)
  • 8:10pm Talk 3: Recap SREcon Americas (Ingo Averdunk, IBM)
  • 8:45 pm Networking + Drinks
  • 9:00 pm Leave happy and inspired :)

Abstracts
#

Talk 1: Simplicity in the Source (Markus Teich, Google)
#

Markus has been an SRE and software engineer at Google for close to 7 years. In his open source endeavours he learned a few things about running open source software and how code simplicity can help with long term maintenance. As an SRE at Google Markus has looked through many different types of code bases across various languages. -In this talk he’ll share some of his observations on how code can be easier to understand and how that can help with incident management and maintenance.

Slides: Simplicity in the Source

Talk 2: Enough Go, what about Rust? (Mario Ortiz Manero, Lyft) #

Working on the open source project Tremor - an event processing system - Mario has gathered some good knowledge about using rust to write production systems that can scale. -He is going to give us valuable insights when Rust is a great language to use and where it can possibly win over the hearts of dedicated Gophers.

Slides: Enough Go, what about Rust?

Talk 3: Recap SREcon Americas (Ingo Averdunk, IBM) #

Following the theme from previous years, Ingo will recap SREcon 2024 Americas. Just like speed dating, Ingo will attempt to collapse 3 conference days into a 30-minute session. -The objective is to provide food for thought and to encourage listening to the playback of interesting sessions.

Slides: Recap SRECon Americas

Photos #

Participation #

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. -Get in touch with the organizers if you’d like to present!

There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. -By attending the event you give your consent to be recorded.

SRE Meetup Munich
Author
SRE Meetup Munich

+In this talk he’ll share some of his observations on how code can be easier to understand and how that can help with incident management and maintenance.

Slides: Simplicity in the Source

Talk 2: Enough Go, what about Rust? (Mario Ortiz Manero, Lyft)
#

Working on the open source project Tremor - an event processing system - Mario has gathered some good knowledge about using rust to write production systems that can scale. +He is going to give us valuable insights when Rust is a great language to use and where it can possibly win over the hearts of dedicated Gophers.

Slides: Enough Go, what about Rust?

Talk 3: Recap SREcon Americas (Ingo Averdunk, IBM)
#

Following the theme from previous years, Ingo will recap SREcon 2024 Americas. Just like speed dating, Ingo will attempt to collapse 3 conference days into a 30-minute session. +The objective is to provide food for thought and to encourage listening to the playback of interesting sessions.

Slides: Recap SRECon Americas

Photos
#

Participation
#

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. +Get in touch with the organizers if you’d like to present!

Legal#

There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. +By attending the event you give your consent to be recorded.

\ No newline at end of file +SRE Munich at Celonis 2024 + + + \ No newline at end of file diff --git a/events/sre-munich-spring-online-event-2020/index.html b/events/sre-munich-spring-online-event-2020/index.html index d11e482..84778a4 100644 --- a/events/sre-munich-spring-online-event-2020/index.html +++ b/events/sre-munich-spring-online-event-2020/index.html @@ -1,21 +1,18 @@ -SRE Munich Spring Online Event 2020 · SRE MUC - - +SRE Munich Spring Online Event 2020 · SRE MUC + -
  1. Events/

SRE Munich Spring Online Event 2020

·305 words·2 mins· -
Table of Contents

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 23rd. This time we are taking things online due to the ongoing COVID-19 situation. The topic for this session is “What kind of SRE am I?” - We’ll hear from SREs in Munich and other cities in the world about their experiences of being an SRE.

Agenda #

  • 18:30 Join the online meeting
  • 18:45 Intro
  • 19:00 SRE Round Table “What SRE means to me and my team?” and “What kind of SRE am I?”
  • 20:00 Open floor, discussion, and questions around the topic
  • 20:30 End

As this is a collective effort to get a glimpse of what SRE means to different people and companies, we encourage the attendees of the meetup to fill out the following survey:

https://forms.gle/4QwpbtqCo9Kbvnys9

We hope that we will get enough samples to perform an analysis and show the results to you in a future meetup.

Participation #

Ideally, we’d like to hear everybody’s opinion. However, we’ll try to use 2 min slots (depending on the participating) for everybody to give their opinion on the matter. Make sure you’re in a quiet environment. As long as you’re not speaking to the microphone, keep yourself muted so that the recording won’t get accidental background sounds. Please use the chat to ask questions and get your turn.

We’re always looking for 20-35 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you’d like to present!

There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.

Spread The Word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!

\ No newline at end of file diff --git a/events/sre-munich-spring-online-event-2021/index.html b/events/sre-munich-spring-online-event-2021/index.html index aa4905f..8537815 100644 --- a/events/sre-munich-spring-online-event-2021/index.html +++ b/events/sre-munich-spring-online-event-2021/index.html @@ -1,25 +1,22 @@ -SRE Munich Spring Online Event 2021 · SRE MUC - - +SRE Munich Spring Online Event 2021 · SRE MUC + -
  1. Events/

SRE Munich Spring Online Event 2021

·267 words·2 mins· -
Table of Contents

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for May 17th. This edition is going to be super exciting giving you insights into how Backstage works at Spotify as well as a deep dive into how GitOps is making deployments more efficient.

Agenda: #

** 19:00 - Join, Chit Chat and Introductions +

  1. Events/

SRE Munich Spring Online Event 2021

·267 words·2 mins· +
SRE Meetup Munich
Author
SRE Meetup Munich
Table of Contents

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for May 17th. This edition is going to be super exciting giving you insights into how Backstage works at Spotify as well as a deep dive into how GitOps is making deployments more efficient.

Agenda:
#

** 19:00 - Join, Chit Chat and Introductions ** 19:15 - Pia Nilsson, Ben Lambert (Spotify) - Backstage.io Intro + Demo ** 19:45 - Sebastian Tiggelkamp (Consol) - GitOps + Demo ** 20:15 - Kaspar von Grünberg (Humanitec) - Developer self-service with Internal Developer Platforms -** 20:30 - Open floor, discussions and questions, Open End

Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!

Speakers #

  • Pia Nilsson is a former backend engineer, TDD enthusiast, domain driven design geek and passionate devopser and today I lead the Developer Experience organization at Spotify. The question that keeps me so excited about our work is: how can we enable 1 team to ship 1 product in 1 week?
  • Sebastian Tiggelkamp is a DevOps Engineer at ConSol Software GmbH in Germany with a focus on CI/CD, GitOps and cloud computing.
  • Kaspar von Grünberg, CEO at Humanitec. Kaspar is the founder of Humanitec. He has spent the last 10 years building and running software companies from retail-applications and door-to-door campaigning technology to monitoring and evaluation for NGOs.

There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.

SRE Meetup Munich
Author
SRE Meetup Munich

+** 20:30 - Open floor, discussions and questions, Open End

Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!

Speakers
#

  • Pia Nilsson is a former backend engineer, TDD enthusiast, domain driven design geek and passionate devopser and today I lead the Developer Experience organization at Spotify. The question that keeps me so excited about our work is: how can we enable 1 team to ship 1 product in 1 week?
  • Sebastian Tiggelkamp is a DevOps Engineer at ConSol Software GmbH in Germany with a focus on CI/CD, GitOps and cloud computing.
  • Kaspar von Grünberg, CEO at Humanitec. Kaspar is the founder of Humanitec. He has spent the last 10 years building and running software companies from retail-applications and door-to-door campaigning technology to monitoring and evaluation for NGOs.

Legal#

There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.

\ No newline at end of file + \ No newline at end of file diff --git a/events/sre-munich-summer-event-2018/index.html b/events/sre-munich-summer-event-2018/index.html index 07a9731..025a324 100644 --- a/events/sre-munich-summer-event-2018/index.html +++ b/events/sre-munich-summer-event-2018/index.html @@ -1,38 +1,26 @@ -SRE Munich at EGYM 2018 · SRE MUC - - +SRE Munich at EGYM 2018 · SRE MUC +
  1. Events/

SRE Munich at EGYM 2018

·345 words·2 mins· -

We’re excited to announce the second Meetup of the Site Reliability Engineering Munich group.

Agenda #

6:30 pm Get Together with food and drinks, sponsored by eGym GmbH +Agenda # 6:30 pm Get Together with food and drinks, sponsored by eGym GmbH 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Maintaining Reliability with Canary Testing, Pavlos Ratis (HolidayCheck) 7:45 pm Talk 2: Distributed Tracing in Production, Michael Würtinger (eGym) 8:15 pm Post Mortem of the Month / Tales from On-call (TBD) 8:20 pm Networking + Drinks 9:00 pm Leave happy and inspired :)">

  1. Events/

SRE Munich at EGYM 2018

·336 words·2 mins· +
SRE Meetup Munich
Author
SRE Meetup Munich
Table of Contents

We’re excited to announce the second Meetup of the Site Reliability Engineering Munich group.

Agenda
#

6:30 pm Get Together with food and drinks, sponsored by eGym GmbH 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Maintaining Reliability with Canary Testing, Pavlos Ratis (HolidayCheck) 7:45 pm Talk 2: Distributed Tracing in Production, Michael Würtinger (eGym) 8:15 pm Post Mortem of the Month / Tales from On-call (TBD) 8:20 pm Networking + Drinks -9:00 pm Leave happy and inspired :)

Speakers #

  • Pavlos Ratis is a Site Reliability Engineer at HolidayCheck in Munich and maintainer of the Awesome SRE repository ( -https://github.com/dastergon/awesome-sre) -.
  • Michael Würtinger is technology fellow and Site Reliability Engineer at eGym. He is driving forward the adoption of Distributed Tracing and other observability methods within eGym.
  • Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud.
  • Dan is the Technical Lead of SRE at eGym, first-time Meetup organizer, and future space traveler.

Participation #

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you’d like to present!

Location #

eGym GmbH, Prannerstr. 2-4, 80333 München

Public Transportation #

Slides #

Recordings #

There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule

Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!

SRE Meetup Munich
Author
SRE Meetup Munich

+9:00 pm Leave happy and inspired :)

Speakers
#

  • Pavlos Ratis is a Site Reliability Engineer at HolidayCheck in Munich and maintainer of the Awesome SRE repository (https://github.com/dastergon/awesome-sre).
  • Michael Würtinger is technology fellow and Site Reliability Engineer at eGym. He is driving forward the adoption of Distributed Tracing and other observability methods within eGym.
  • Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud.
  • Dan is the Technical Lead of SRE at eGym, first-time Meetup organizer, and future space traveler.

Participation
#

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you’d like to present!

Location
#

eGym GmbH, Prannerstr. 2-4, 80333 München

Public Transportation
#

Slides
#

Recordings
#

Legal#

There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule

Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!

\ No newline at end of file + \ No newline at end of file diff --git a/events/sre-munich-summer-event-2019/index.html b/events/sre-munich-summer-event-2019/index.html index 130f46f..59f046b 100644 --- a/events/sre-munich-summer-event-2019/index.html +++ b/events/sre-munich-summer-event-2019/index.html @@ -1,23 +1,20 @@ -SRE Munich at EGYM 2019 · SRE MUC - - +SRE Munich at EGYM 2019 · SRE MUC +
  1. Events/

SRE Munich at EGYM 2019

·504 words·3 mins· -

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.

Agenda: #

  • 6:30 pm Get Together with food and drinks
  • 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan)
  • 7:15 pm Talk 1: Canary Releases with Traefik on GKE, Periklis Tsirakidis
  • 7:45 pm Talk 2: Anatomy of a SRE and DevOps transformation, Aymeric Gerardin
  • 8:15 pm Talk 3: Recap SREcon 2019 Americas, Ingo Averdunk
  • 8:30 pm Networking + Drinks
  • 9:00 pm Leave happy and inspired :)

Speakers #

  • Periklis Tsirakidis worked for the last 9 years on various infrastructure as a code projects for distributed systems. Currently member of the Platform Engineering Group at Holidaycheck with focus on the self-service platform based on Kubernetes and GCP.
  • Aymeric Gerardin, Departement manager Data management Site Reliability engineering @Amadeus. IT leader in Data Solutions, actively integrating and running new technology platforms and transforming organizations into SRE and DevOps
  • Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud.
  • Dan is an Engineering Manager at Google and future space traveler.

Abstracts #

  • Canary Releases with Traefik on GKE: Periklis shares with us how Traefik helped HolidayCheck shape their cloud ecosystem. In particular, he will give a brief in-depth introduction on how they implemented their canary release process for our microservice architecture with Traefik on Google Kubernetes Engine (GKE).
  • Anatomy of a SRE and DevOps transformation: Keeping your IT service organization in the state of the art is key for the company success. 3 years ago we started our SRE and DevOps journey.
  • With 3000+ infrastrucutre nodes, a legacy task based organization and a clear split between Operations and Development it promised to be a chalenging journey… And it was! Come and deep dive with us in this mindset, skill set, organizational and processes revolution. From our initial plan to the current setup we will share with you the good, the bad and the ugly
  • Recap SREcon 2019 Americas: Once a year, SREcon gathers the community of SREs to share experience and learn from each other. This will be a recap of SREcon Americas 2019 (March 25-27, Brooklyn) . Key themes of the conference were Comprehension, Understandability, and Predictability. Ingo will share his observations from the conference, and highlight several session worth listening to as a replay.

Participation #

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you’d like to present!

There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule

Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!

\ No newline at end of file diff --git a/events/sre-munich-summer-event-2024/index.html b/events/sre-munich-summer-event-2024/index.html new file mode 100644 index 0000000..aaaa03b --- /dev/null +++ b/events/sre-munich-summer-event-2024/index.html @@ -0,0 +1,21 @@ +SRE Munich at Celonis 2024 · SRE MUC + + +
  1. Events/

SRE Munich at Celonis 2024

·792 words·4 mins· +
SRE Meetup Munich
Author
SRE Meetup Munich
Table of Contents

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for July 10th. +This time around we will be meeting at Celonis . Let’s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!). +Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters. +Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag! +You can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)

Agenda
#

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Celonis welcomes you to SREmuc
  • 7:10 pm Talk 1: Upgrading thousands of stateful applications across a global Kubernetes infrastructure (Michael Lex, ClickHouse)
  • 7:40 pm Talk 2: Lessons learned from 15 years DevOps (Paul Stack, System Initiative)
  • 8:30 pm Networking + Drinks
  • 9:00 pm Leave happy and inspired :)

Abstracts
#

Talk 1: Upgrading thousands of stateful applications across a global Kubernetes infrastructure (Michael Lex, ClickHouse)
#

How do you upgrade thousands of similar but independent stateful applications running ClickHouse in a controlled way, across tens of regions in all major cloud providers? Full automation is a must - at that scale manual toil is time consuming and error prone. Full control is necessary as well - on-call engineers need to interact with the automation to pause the rollout, resume it or roll back. And most important: the automation needs to be safe - taking into account signals from monitoring systems to automatically detect problems caused by the rollout (and react to them in an appropriate way). A full rollout can take several days - potentially weeks. So any automation must be able to deal with interruptions, intermittent upgrades or even temporary downtime of the automation system itself. With Temporal.io and its “durable execution” paradigm, the rollout automation system developed for the ClickHouse Cloud addresses all those concerns.

Michael Lex is a seasoned engineer who has worked in various fields ranging from consulting to fast-paced startups. He currently works as an Engineering Manager at Clickhouse where he and his team work on friction-less deployments of stateful applications for thousands of customers.

Slides: Not yet, stay tuned :)

Talk 2: Lessons learned from 15 years DevOps (Paul Stack, System Initiative)
#

It’s almost 15 years since the inception of DevOps. The core value of DevOps was to break down the silos and improve communication to achieve stability, reliability, availability, and security. In the boom of the ecosystem since that point, it sometimes feels like we’ve created more silos and stemmed communication in every way with the tooling we have. What if we take the lessons we’ve learned along the way and try to reimagine DevOps tooling to fulfill the original promise of the DevOps movement? What if we could remove the 200% problem (the need to know a specialist language AND a cloud framework) from our tooling? What if we could focus on delivery in a collaborative manner rather than communicating via a series of handoffs via pull requests? It’s time for a second wave of DevOps tools.

In this talk, Paul is going to reflect on the lessons we’ve learned along the DevOps journey, for example Infrastructure as Code, and talk about the work System Initiative is doing to revolutionize how people collaborate to build and maintain complex infrastructure. System Initiative is the beginning of an ecosystem to create a real-time, multiplayer, multi-modal reinvention of DevOps tooling. System Initiative provides a modern, state of the art approach to infrastructure management that increases productivity with its simulation-based workflow.

Once you see what it’s possible to achieve, you won’t want to settle any longer.

Paul Stack is an infrastructure coder and has spoken at various events throughout the world about his passion for continuous integration, continuous delivery and good operational procedures and why they should be part of what developers and system administrators do on a day to day basis. He believes that reliably delivering software is more important than its development. Paul’s passions are the DevOps and Continuous Delivery movements and how they help the entire business and its customers.

Slides: Not yet, stay tuned :)

Photos
#

Not yet, stay tuned :)

Participation
#

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. +Get in touch with the organizers if you’d like to present!

Legal#

There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. +By attending the event you give your consent to be recorded.

\ No newline at end of file diff --git a/events/sre-munich-summer-fall-event-2023/index.html b/events/sre-munich-summer-fall-event-2023/index.html index d89e47b..3b2fefa 100644 --- a/events/sre-munich-summer-fall-event-2023/index.html +++ b/events/sre-munich-summer-fall-event-2023/index.html @@ -1,25 +1,22 @@ -SRE Munich at Google 2023 · SRE MUC - - +SRE Munich at Google 2023 · SRE MUC +
  1. Events/

SRE Munich at Google 2023

·546 words·3 mins· -

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 26th.

This time around we will be meeting at Google in their Isarvalley event space! Lets all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!).

Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.

Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag! -You can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)

Please note: Google requires us to register all guests with their real name. Please have a valid ID card with you, so you can be let into the building. Make sure your Meetup account names match your ID.

Agenda #

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Welcome to SREmuc
  • 7:05 pm Talk 1: Postmortem Culture at Google (Martin Höfling, Google)
  • 7:40 pm Short break
  • 8:00 pm Talk 2: Eliminating human error using self-service GitOps with Crossplane (Stéphane Di Cesare and Christopher Haar, DKB)
  • 8:30 pm Talk 3: General Discussion
  • 8:45 pm Networking + Drinks
  • 9:00 pm Leave happy and inspired :)

Speakers #

  • Martin Höfling is a Technical Program Manager at Google.
  • Stéphane Di Cesare is a Senior Platform Engineer at DKB, where he is focusing on improving the developer experience and the developer acceptance of the internal platform. He also has a consulting background.
  • Christopher Haar is Platform Tech Lead at DKB, where he is responsible of determining the technologies used by the internal platform. He is also one of the maintainers of the Crossplane open source project.

Topics #

Postmortem Culture at Google #

Postmortems are one of the key tools of SREs to not repeat the same mistakes and learn from past incidents. This introductory talk explains how to write a good Postmortem that can strengthen company culture when mistakes happen. Martin has been working in SRE at Google for many years now and will give you an insight into how Google does Postmortems.

Slides: Post Mortem Culture at Google

Eliminating human error using self-service GitOps with Crossplane #

In this talk, we are going to present what the typical challenges of a Platform team are. We will highlight the importance of self-service GitOps in a banking environment, and will explain how these principles are implemented at DKB, using the open source projects Crossplane and Flux. -Speaker

Slides: Eliminating human error using self-service GitOps with Crossplane

Open Discussion #

Following the theme we started in our last Meetup, we want to discuss certain topics that the SRE community might be interested in. Examples could be the recent license change in Terraform, or the application of Generative AI in the field of Operations. We look forward to engaging in insightful conversations, fostering mutual learning, and collectively expanding our knowledge base.

Slides: Meetup Intro & Open Discussion

Photos #

IMG_20230927_104631512.jpg
IMG_20230927_104647576.jpg
IMG_20230927_104712416.jpg
IMG_20230927_104620601.jpg
1695820864186.jpeg

There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.

\ No newline at end of file diff --git a/events/sre-munich-winter-event-2020/index.html b/events/sre-munich-winter-event-2020/index.html index 56c45c8..a143353 100644 --- a/events/sre-munich-winter-event-2020/index.html +++ b/events/sre-munich-winter-event-2020/index.html @@ -1,24 +1,21 @@ -SRE Munich at Google 2020 · SRE MUC - - +SRE Munich at Google 2020 · SRE MUC +
  1. Events/

SRE Munich at Google 2020

·605 words·3 mins· -

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.

Agenda #

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Welcome, Feedback from last Meetup
  • 7:10 pm Talk 1: Intelligent Cloud Operations with AIOps
  • 8:05 pm Short break
  • 8:15 pm Talk 2: The Road to SRE (Instana)
  • 8:45 pm Networking + Drinks
  • 9:00 pm Leave happy and inspired :)

Abstracts #

Title: Intelligent Cloud Operations with AIOps #

Abstract: The field of AIOps, also known as Artificial Intelligence for IT Operations, uses advanced technologies to dramatically improve the monitoring, operation, and troubleshooting of distributed systems. Its main premise is that operations can be automated using monitoring data to reduce the workload of operators (e.g., SREs or production engineers). Our current research explores how AIOps – and many related fields such as deep learning, machine learning, distributed traces, graph analysis, time-series analysis, sequence analysis, advanced statistics, NLP and log analysis – can be explored to effectively detect, localize, predict, and remediate failures in large-scale cloud infrastructures (>50 regions and AZs) by analyzing service management data (e.g., distributed traces, logs, events, alerts, metrics). In particular, this talk will describe how a particular monitoring data structure, called distributed traces, can be analyzed using deep learning to identify anomalies in its spans. This capability empowers operators to quickly identify which components of a distributed system are faulty.

Title: The Road to SRE #

Abstract: Building and establishing a SRE team is a complex challenge that involves a lot more than just overcoming technical hurdles. Especially in the context of a fast-growing startup there are quite some lessons to be learned. The talk walks through the evolution of the operations/SRE team at Instana. From the early beginnings, having just a handful of well-meaning family and friends customers, winging features and deployments left and right over platform re-architectures and team growth to the present day with customers all around the world to whom we want to offer a frictionless 24/7 availability and product experience. -During this time, we doubted, changed and learned a lot of things - some of them obvious, some of them not so much - around tooling, technology, architecture as well as processual and organizational topics.

Speakers #

  • Dr. Jorge Cardoso is Chief Architect for Planet-scale AIOps at Huawei’s Ireland and Munich Research Centers. Before, he worked for several major companies such as SAP Research (Germany) on the Internet of Services and the Boeing Company in Seattle (USA) on Enterprise Application Integration. He previously gave lectures at the Karlsruhe Institute of Technology (Germany), University of Georgia (USA), University of Coimbra and University of Madeira (Portugal). His current research involves the development of the next generation of AIOps platforms and Cloud operations tools driven by AI to increase Cloud reliability and resilience. He has a Ph.D. in Computer Science from the University of Georgia (USA).
  • Bastian Spanneberg (@spanneberg) is part of the SRE team at Instana and has seen the company grow and evolve from the early days

Participation #

We’re always looking for 20-35 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you’d like to present!

There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule

Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!

\ No newline at end of file diff --git a/events/sre-munich-winter-event-2023/index.html b/events/sre-munich-winter-event-2023/index.html index 3a18eb8..e247974 100644 --- a/events/sre-munich-winter-event-2023/index.html +++ b/events/sre-munich-winter-event-2023/index.html @@ -1,33 +1,30 @@ -SRE Munich at MaibornWolff 2023 · SRE MUC - - +SRE Munich at MaibornWolff 2023 · SRE MUC + -
  1. Events/

SRE Munich at MaibornWolff 2023

·528 words·3 mins· -

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for February 13th. +

  1. Events/

SRE Munich at MaibornWolff 2023

·528 words·3 mins· +
SRE Meetup Munich
Author
SRE Meetup Munich
Table of Contents

We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for February 13th. This time around we will be meeting at MaibornWolff as they have graciously agreed to host us! Lets all meet up once again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!). Meetups are about engaging within the community, so we are looking to everyone to share -ideas and learn to ultimately to reduce the risk of disasters.

We would like to thank MaibornWolff for sponsoring this event and catering it!

Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!

You can reach the organizers at muc@sre.xyz

Agenda #

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Welcome to SREmuc
  • 7:15 pm Talk 1: …and now it is yours! Building reliable and maintainable platforms for customers (Maximilian Schaugg, Martin Zehetmayer)
  • 7:45 pm Short break
  • 8:00 pm Talk 2: Simplifying Development and Testing Infrastructure with mirrord (Tal Zwick, MetalBear)
  • 8:30 pm Talk 3: Recap SREcon 2022 Europe
  • 8:45 pm Networking + Drinks
  • 9:30 pm Leave happy and inspired :)

Speakers #

  • Maximilian Schaugg, MaibornWolff
  • Martin Zehetmayer, MaibornWolff
  • Tal Zwick, MetalBear
  • Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud.

Abstracts #

Talk 0 #

Kordian Bruck (Google) and Ingo Averdunk (IBM) introduced the location and topics for today.

Slides: /slides/KickOff.pdf

Talk 1 #

Building a reliable and maintainable platform is hard, even if you have a large amount of people and resources available. +ideas and learn to ultimately to reduce the risk of disasters.

We would like to thank MaibornWolff for sponsoring this event and catering it!

Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!

You can reach the organizers at muc@sre.xyz

Agenda
#

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Welcome to SREmuc
  • 7:15 pm Talk 1: …and now it is yours! Building reliable and maintainable platforms for customers (Maximilian Schaugg, Martin Zehetmayer)
  • 7:45 pm Short break
  • 8:00 pm Talk 2: Simplifying Development and Testing Infrastructure with mirrord (Tal Zwick, MetalBear)
  • 8:30 pm Talk 3: Recap SREcon 2022 Europe
  • 8:45 pm Networking + Drinks
  • 9:30 pm Leave happy and inspired :)

Speakers
#

  • Maximilian Schaugg, MaibornWolff
  • Martin Zehetmayer, MaibornWolff
  • Tal Zwick, MetalBear
  • Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud.

Abstracts
#

Talk 0
#

Kordian Bruck (Google) and Ingo Averdunk (IBM) introduced the location and topics for today.

Slides: /slides/KickOff.pdf

Talk 1
#

Building a reliable and maintainable platform is hard, even if you have a large amount of people and resources available. Let’s imagine, you need to build a platform, which you have to hand over to someone else — immediately your bar is set higher. Let us show you methodologies, how to find the right tools for a cloud-native project, common problems as well as what you need to -tackle, in order to make the platform operable for your customer.

Learn from real project stories and receive practical hints for using CNCF products for a ready-to-operate platform.

Slides: /slides/building_reliable_and_maintainable_platform.pdf

Talk 2 #

Organizations that build and deploy cloud-native software are faced with the challenge of building and maintaining infrastructure for +tackle, in order to make the platform operable for your customer.

Learn from real project stories and receive practical hints for using CNCF products for a ready-to-operate platform.

Slides: /slides/building_reliable_and_maintainable_platform.pdf

Talk 2
#

Organizations that build and deploy cloud-native software are faced with the challenge of building and maintaining infrastructure for the development and testing of their software. Development ergonomics and testing quality tend to be at odds with keeping costs and complexity low. mirrord “mirrors” the environment of a Kubernetes cluster to local processes in real-time. We’ll explore how organizations can employ mirrord to -give their developers the best cloud development experience, all while simplifying the development infrastructure.

Slides: /slides/mirrord.pdf

Talk 3 #

A recap of SREcon 2022 Europe.

Slides: /slides/recap.pdf

Photos #

photos
photos
photos
photos
photos
photos
photos
photos
photos
photos
photos
photos
photos
photos
photos
photos
photos
photos
photos

Participation #

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. -Get in touch with the organizers if you’d like to present!

There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. -By attending the event you give your consent to be recorded.

\ No newline at end of file + \ No newline at end of file diff --git a/events/sre-munich-winter-event-2024/index.html b/events/sre-munich-winter-event-2024/index.html index 2c0e941..cb6f67c 100644 --- a/events/sre-munich-winter-event-2024/index.html +++ b/events/sre-munich-winter-event-2024/index.html @@ -1,27 +1,23 @@ -SRE+Grafana Munich at nordcloud 2024 · SRE MUC - - +SRE+Grafana Munich at nordcloud 2024 · SRE MUC + -
  1. Events/

SRE+Grafana Munich at nordcloud 2024

·618 words·3 mins· -

We’re co-hosting with Grafana & Friends meetup group https://www.meetup.com/grafana-and-friends-munich/ -. Come and see new faces!

This time around we will be meeting at Nordcloud in their Highlight Towers location Let’s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!).

Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.

Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!

You can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)

Agenda #

  • 6:30 pm Get together with food and drinks
  • 7:00 pm Welcome to SREmuc and Grafana&Friends
  • 7:05 pm Talk 1: Philosophy of Observability (Richard Hartmann, Grafana Labs)
  • 7:35 pm Talk 2: Navigating Observability with OTel and Grafana: A Strategic Overview (Nadya Shakhat, Nordcloud)
  • 8:10 pm Talk 3: Navigating the Nuances of GitOps in an Enterprise Environment (Bernard Halas, Berops)
  • 8:45 pm Networking + Drinks
  • 9:00 pm Leave happy and inspired :)

Abstracts #

Talk 1: Philosophy of Observability #

About the speaker: Richard Hartmann is Director of Community at Grafana Labs

No slides, as this was an open discussion and history lesson.

Talk 2: Navigating Observability with OTel and Grafana: A Strategic Overview #

In this presentation we are going to dive into the interplay between OpenTelemetry (OTel) and Grafana within the AWS landscape. We’ll focus on the challenges and solutions for scaling OTel collectors and Grafana agents, with a special emphasis on the challenges of tracing sampling. This talk is tailored to shed light on creating a scalable, robust observability framework in cloud-native environments, and will also touch on the different deployment scenarios, balancing technical depth with practical insights.

About the speaker: Nadya Shakhat, a Cloud Architect at Nordcloud and a certified GCP Professional Architect and Data Engineer, brings a decade of experience in software development, DevOps and observability. Her journey includes significant contributions to open-source projects like OpenStack, particularly as a core contributor to the OpenStack Telemetry project. At Nordcloud and IBM, Nadya focuses on crafting scalable data and observability solutions for diverse clientele, leveraging her deep expertise in monitoring and cloud technologies.

Slides: Navigating Observability with OTel and Grafana

Talk 3: Navigating the Nuances of GitOps in an Enterprise Environment #

GitOps has emerged as a leading approach for infrastructure management, but its implementation can be challenging due to the diversity of tools, legacy systems, and organizational factors involved. This talk will delve into the common pitfalls and complexities of large-scale GitOps deployments, exploring strategies to streamline operations without compromising flexibility. -We’ll address technical aspects, architectural considerations, security implications, work methodologies, organizational structures, and the role of Developer Experience (DevEx) in shaping a successful GitOps implementation.

About the Speaker: Bernard’s professional career has been growing at an intersection of networking, SW engineering and infra-engineering fields. He used to run an ISP (Internet Service Provider) company as a hobby and that’s where his love for the Linux ecosystem sparked. This has naturally evolved through DevOps-like roles into cloud platform engineering nowadays. He is leading a team of Kubernetes consultants with a focus on on-prem and hybrid-cloud platforms.

Slides: Navigating Nuances of GitOps

Photos #

Participation #

We’re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. -Get in touch with the organizers if you’d like to present!

There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. -By attending the event you give your consent to be recorded.

\ No newline at end of file diff --git a/index.html b/index.html index 48fa0dc..6484e9c 100644 --- a/index.html +++ b/index.html @@ -1,14 +1,11 @@ -SRE MUC - - +SRE MUC + -
SRE Meetup Munich

SRE Meetup Munich

This is a group for all the guards of the nines, for the brave on-call heroes, for system and software engineers with a liking for uptime, for the fans of the feature, and all those who think that hope is not a strategy. Let’s learn from each other, share our on-call experiences, and explore together!

Recent

SRE Munich at Jambit 2024
·478 words·3 mins
SRE+Grafana Munich at nordcloud 2024
·618 words·3 mins
SRE Munich at Google 2023
·546 words·3 mins
SRE Munich at Netlight 2023
·615 words·3 mins
SRE Munich at MaibornWolff 2023
·528 words·3 mins
\ No newline at end of file +
SRE Meetup Munich

SRE Meetup Munich

This is a group for all the guards of the nines, for the brave on-call heroes, for system and software engineers with a liking for uptime, for the fans of the feature, and all those who think that hope is not a strategy. Let’s learn from each other, share our on-call experiences, and explore together!

Recent

SRE Munich at Celonis 2024
·792 words·4 mins
SRE Munich at Jambit 2024
·478 words·3 mins
SRE+Grafana Munich at nordcloud 2024
·617 words·3 mins
SRE Munich at Google 2023
·546 words·3 mins
SRE Munich at Netlight 2023
·615 words·3 mins
\ No newline at end of file diff --git a/index.json b/index.json index 83e3caa..0e0bdd1 100644 --- a/index.json +++ b/index.json @@ -1 +1 @@ -[{"content":"","date":"19 March 2024","permalink":"/events/","section":"Events","summary":"","title":"Events"},{"content":"","date":"19 March 2024","permalink":"/","section":"SRE MUC","summary":"","title":"SRE MUC"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 25th from 6:30 PM to 9:30 PM CEST at Jambit in Munich. Let\u0026rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!). Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters. Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag. You can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc 7:10 pm Talk 1: Simplicity in the Source (Markus Teich, Google) 7:40 pm Talk 2: Enough Go, what about Rust? (Mario Ortiz Manero, Lyft) 8:10pm Talk 3: Recap SREcon Americas (Ingo Averdunk, IBM) 8:45 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Abstracts # Talk 1: Simplicity in the Source (Markus Teich, Google) # Markus has been an SRE and software engineer at Google for close to 7 years. In his open source endeavours he learned a few things about running open source software and how code simplicity can help with long term maintenance. As an SRE at Google Markus has looked through many different types of code bases across various languages. In this talk he\u0026rsquo;ll share some of his observations on how code can be easier to understand and how that can help with incident management and maintenance.\nSlides: Simplicity in the Source Talk 2: Enough Go, what about Rust? (Mario Ortiz Manero, Lyft) # Working on the open source project Tremor - an event processing system - Mario has gathered some good knowledge about using rust to write production systems that can scale. He is going to give us valuable insights when Rust is a great language to use and where it can possibly win over the hearts of dedicated Gophers.\nSlides: Enough Go, what about Rust? Talk 3: Recap SREcon Americas (Ingo Averdunk, IBM) # Following the theme from previous years, Ingo will recap SREcon 2024 Americas. Just like speed dating, Ingo will attempt to collapse 3 conference days into a 30-minute session. The objective is to provide food for thought and to encourage listening to the playback of interesting sessions.\nSlides: Recap SRECon Americas Photos # Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\n","date":"19 March 2024","permalink":"/events/sre-munich-spring-event-2024/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 25th from 6:30 PM to 9:30 PM CEST at Jambit in Munich. Let\u0026rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!","title":"SRE Munich at Jambit 2024"},{"content":"We\u0026rsquo;re co-hosting with Grafana \u0026amp; Friends meetup group https://www.meetup.com/grafana-and-friends-munich/ . Come and see new faces!\nThis time around we will be meeting at Nordcloud in their Highlight Towers location Let\u0026rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!).\nMeetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.\nPlease help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!\nYou can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc and Grafana\u0026amp;Friends 7:05 pm Talk 1: Philosophy of Observability (Richard Hartmann, Grafana Labs) 7:35 pm Talk 2: Navigating Observability with OTel and Grafana: A Strategic Overview (Nadya Shakhat, Nordcloud) 8:10 pm Talk 3: Navigating the Nuances of GitOps in an Enterprise Environment (Bernard Halas, Berops) 8:45 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Abstracts # Talk 1: Philosophy of Observability # About the speaker: Richard Hartmann is Director of Community at Grafana Labs\nNo slides, as this was an open discussion and history lesson.\nTalk 2: Navigating Observability with OTel and Grafana: A Strategic Overview # In this presentation we are going to dive into the interplay between OpenTelemetry (OTel) and Grafana within the AWS landscape. We\u0026rsquo;ll focus on the challenges and solutions for scaling OTel collectors and Grafana agents, with a special emphasis on the challenges of tracing sampling. This talk is tailored to shed light on creating a scalable, robust observability framework in cloud-native environments, and will also touch on the different deployment scenarios, balancing technical depth with practical insights.\nAbout the speaker: Nadya Shakhat, a Cloud Architect at Nordcloud and a certified GCP Professional Architect and Data Engineer, brings a decade of experience in software development, DevOps and observability. Her journey includes significant contributions to open-source projects like OpenStack, particularly as a core contributor to the OpenStack Telemetry project. At Nordcloud and IBM, Nadya focuses on crafting scalable data and observability solutions for diverse clientele, leveraging her deep expertise in monitoring and cloud technologies.\nSlides: Navigating Observability with OTel and Grafana Talk 3: Navigating the Nuances of GitOps in an Enterprise Environment # GitOps has emerged as a leading approach for infrastructure management, but its implementation can be challenging due to the diversity of tools, legacy systems, and organizational factors involved. This talk will delve into the common pitfalls and complexities of large-scale GitOps deployments, exploring strategies to streamline operations without compromising flexibility. We\u0026rsquo;ll address technical aspects, architectural considerations, security implications, work methodologies, organizational structures, and the role of Developer Experience (DevEx) in shaping a successful GitOps implementation.\nAbout the Speaker: Bernard\u0026rsquo;s professional career has been growing at an intersection of networking, SW engineering and infra-engineering fields. He used to run an ISP (Internet Service Provider) company as a hobby and that\u0026rsquo;s where his love for the Linux ecosystem sparked. This has naturally evolved through DevOps-like roles into cloud platform engineering nowadays. He is leading a team of Kubernetes consultants with a focus on on-prem and hybrid-cloud platforms.\nSlides: Navigating Nuances of GitOps Photos # Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\n","date":"7 February 2024","permalink":"/events/sre-munich-winter-event-2024/","section":"Events","summary":"We\u0026rsquo;re co-hosting with Grafana \u0026amp; Friends meetup group https://www.meetup.com/grafana-and-friends-munich/ . Come and see new faces!\nThis time around we will be meeting at Nordcloud in their Highlight Towers location Let\u0026rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!","title":"SRE+Grafana Munich at nordcloud 2024"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 26th.\nThis time around we will be meeting at Google in their Isarvalley event space! Lets all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!).\nMeetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.\nPlease help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag! You can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)\nPlease note: Google requires us to register all guests with their real name. Please have a valid ID card with you, so you can be let into the building. Make sure your Meetup account names match your ID.\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc 7:05 pm Talk 1: Postmortem Culture at Google (Martin Höfling, Google) 7:40 pm Short break 8:00 pm Talk 2: Eliminating human error using self-service GitOps with Crossplane (Stéphane Di Cesare and Christopher Haar, DKB) 8:30 pm Talk 3: General Discussion 8:45 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Speakers # Martin Höfling is a Technical Program Manager at Google. Stéphane Di Cesare is a Senior Platform Engineer at DKB, where he is focusing on improving the developer experience and the developer acceptance of the internal platform. He also has a consulting background. Christopher Haar is Platform Tech Lead at DKB, where he is responsible of determining the technologies used by the internal platform. He is also one of the maintainers of the Crossplane open source project. Topics # Postmortem Culture at Google # Postmortems are one of the key tools of SREs to not repeat the same mistakes and learn from past incidents. This introductory talk explains how to write a good Postmortem that can strengthen company culture when mistakes happen. Martin has been working in SRE at Google for many years now and will give you an insight into how Google does Postmortems.\nSlides: Post Mortem Culture at Google Eliminating human error using self-service GitOps with Crossplane # In this talk, we are going to present what the typical challenges of a Platform team are. We will highlight the importance of self-service GitOps in a banking environment, and will explain how these principles are implemented at DKB, using the open source projects Crossplane and Flux. Speaker\nSlides: Eliminating human error using self-service GitOps with Crossplane Open Discussion # Following the theme we started in our last Meetup, we want to discuss certain topics that the SRE community might be interested in. Examples could be the recent license change in Terraform, or the application of Generative AI in the field of Operations. We look forward to engaging in insightful conversations, fostering mutual learning, and collectively expanding our knowledge base.\nSlides: Meetup Intro \u0026amp; Open Discussion Photos # Legal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\n","date":"7 September 2023","permalink":"/events/sre-munich-summer-fall-event-2023/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 26th.\nThis time around we will be meeting at Google in their Isarvalley event space!","title":"SRE Munich at Google 2023"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for June 13th.\nThis time around we will be meeting at Netlight as they have graciously agreed to host us! Lets all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!). Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.\nWe would like to thank Netlight Consulting for sponsoring this event and catering it!\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc 7:10 pm Talk 1: Exercising Effective Incident Response and Disaster Recovery Plan via Gamedays (Thanos Amoutzias, VW Elli) 7:30 pm Talk 2: Building Resilient Event-Driven Systems with GCP Pub/Sub: Key Reliability Considerations (Saadi Myftija, Netlight) 8:00 pm Short break 8:15 pm Talk 3: Eliminating human error using self-service GitOps with Crossplane (Stéphane Di Cesare and Christopher Haar, DKB) 8:45 pm Networking + Drinks 9:30 pm Leave happy and inspired :) Speakers # Thanos Amoutzias is a Software Engineer and SRE Lead at VW Elli. He is passionate about building reliable services and delivering impactful products. You can find him on LinkedIn and in the mountains. Saadi Myftija is a consultant at Netlight, focusing on backend and cloud engineering. He\u0026rsquo;s currently working as tech lead in the EV charging platform team at VW Elli. Stéphane Di Cesare is a Senior Platform Engineer at DKB, where he is focusing on improving the developer experience and the developer acceptance of the internal platform. He also has a consulting background. Christopher Haar is Platform Tech Lead at DKB, where he is responsible of determining the technologies used by the internal platform. He is also one of the maintainers of the Crossplane open source project. Abstracts # Talk 1 # How can I start practicing Gamedays at my company? In this talk we are going to dive deeper into the organization of the event, from identifying incidents to run, execution and logistics to disaster recovery. Lastly, we will have a look at results and feedback we have received.\nSlides /slides/2023_06/gamedays.pdf Talk 2 # Event-driven architecture (EDA) is a common pattern in building modern service-oriented applications. It helps decoupling system components, which enables scaling, updating and deploying them independently. However, EDA comes with its own set of challenges and trade-offs. In this presentation we\u0026rsquo;ll talk about reliability considerations around GCP Pub/Sub, our event broker of choice to implement EDA. We\u0026rsquo;ll mainly focus on publisher reliability and how to monitor it, dead-letter queues and message retrying.\nTalk 3 # In this talk, we are going to present what the typical challenges of a Platform team are. We will highlight the importance of self-service GitOps in a banking environment, and will explain how these principles are implemented at DKB, using the open source projects Crossplane and Flux.\nPhotos # Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nSlides # Will be added after the event\nLegal # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"23 May 2023","permalink":"/events/sre-munich-spring-event-2023/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for June 13th.\nThis time around we will be meeting at Netlight as they have graciously agreed to host us!","title":"SRE Munich at Netlight 2023"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for February 13th. This time around we will be meeting at MaibornWolff as they have graciously agreed to host us! Lets all meet up once again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!). Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.\nWe would like to thank MaibornWolff for sponsoring this event and catering it!\nPlease help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!\nYou can reach the organizers at muc@sre.xyz Agenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc 7:15 pm Talk 1: …and now it is yours! Building reliable and maintainable platforms for customers (Maximilian Schaugg, Martin Zehetmayer) 7:45 pm Short break 8:00 pm Talk 2: Simplifying Development and Testing Infrastructure with mirrord (Tal Zwick, MetalBear) 8:30 pm Talk 3: Recap SREcon 2022 Europe 8:45 pm Networking + Drinks 9:30 pm Leave happy and inspired :) Speakers # Maximilian Schaugg, MaibornWolff Martin Zehetmayer, MaibornWolff Tal Zwick, MetalBear Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Abstracts # Talk 0 # Kordian Bruck (Google) and Ingo Averdunk (IBM) introduced the location and topics for today.\nSlides: /slides/KickOff.pdf Talk 1 # Building a reliable and maintainable platform is hard, even if you have a large amount of people and resources available. Let’s imagine, you need to build a platform, which you have to hand over to someone else — immediately your bar is set higher. Let us show you methodologies, how to find the right tools for a cloud-native project, common problems as well as what you need to tackle, in order to make the platform operable for your customer.\nLearn from real project stories and receive practical hints for using CNCF products for a ready-to-operate platform.\nSlides: /slides/building_reliable_and_maintainable_platform.pdf Talk 2 # Organizations that build and deploy cloud-native software are faced with the challenge of building and maintaining infrastructure for the development and testing of their software. Development ergonomics and testing quality tend to be at odds with keeping costs and complexity low. mirrord “mirrors” the environment of a Kubernetes cluster to local processes in real-time. We’ll explore how organizations can employ mirrord to give their developers the best cloud development experience, all while simplifying the development infrastructure.\nSlides: /slides/mirrord.pdf Talk 3 # A recap of SREcon 2022 Europe.\nSlides: /slides/recap.pdf Photos # Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\n","date":"13 February 2023","permalink":"/events/sre-munich-winter-event-2023/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for February 13th. This time around we will be meeting at MaibornWolff as they have graciously agreed to host us!","title":"SRE Munich at MaibornWolff 2023"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for October 13th.\nAfter many months of virtual events and meetings, this edition finally reverts to an in-person event. We will learn about the SRE practice in Munich, as well as key themes of the global SRE community. On this day, want to engage with and learn from each other, to reduce the risk of disasters (hint !).\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc 7:10 pm Talk 1: SRE at SIXT at a glance (Andreas Klinger, SIXT) 7:45 pm Short break 8:00 pm Talk 2: How Google got to rolling Linux releases for Desktops (Kordian Bruck, Google) 8:30 pm Talk 3: Recap SREcon Americas (Ingo Averdunk, IBM) 9:00 pm Networking + Drinks 9:30 pm Leave happy and inspired :) We would like to thank SIXT Autovermietung for sponsoring this event.\nPlease help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!\nSpeakers and Abstracts # Talk 1 # Andreas Klinger and team will give us an overview on SRE at SIXT. Starting with the overall roadmap of SRE at SIXT, Andreas will zoom into details on platform security (AMI re-rolling, Image scanning via Crowdstrike), deployments via CI Bot and service discovery, as well as the use of OPA for Kafka Authorization and Authentication.\nTalk 2 # Kordian Bruck will present How Google got to rolling Linux releases for Desktops. At Google, we run large production fleets that serve Google products like YouTube and Gmail. To support all our employees, including engineers, we also run a sizable corporate fleet with hundreds of thousands of devices across multiple platforms, models, and locations. To let each Googler work in the environment they are most productive in, we operate many OS-platforms including a Linux system. For a long time, our internal-facing Linux distribution, Goobuntu, was based off of Ubuntu LTS releases. In 2018 we completed a move to a rolling release model based on Debian.\nTalk 3 # Following the theme from previous years, Ingo Averdunk will recap SREcon 2022 Americas. Just like speed dating, Ingo will attempt to collapse 3 conference days into a 30 min session. The objective is to provide food for thought, and to encourage listening to the playback of interesting sessions.\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded or photographed.\n","date":"13 October 2022","permalink":"/events/sre-munich-fall-event-2022/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for October 13th.\nAfter many months of virtual events and meetings, this edition finally reverts to an in-person event.","title":"SRE Munich at Sixt 2022"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for May 17th. This edition is going to be super exciting giving you insights into how Backstage works at Spotify as well as a deep dive into how GitOps is making deployments more efficient.\nAgenda: # ** 19:00 - Join, Chit Chat and Introductions ** 19:15 - Pia Nilsson, Ben Lambert (Spotify) - Backstage.io Intro + Demo ** 19:45 - Sebastian Tiggelkamp (Consol) - GitOps + Demo ** 20:15 - Kaspar von Grünberg (Humanitec) - Developer self-service with Internal Developer Platforms ** 20:30 - Open floor, discussions and questions, Open End\nPlease help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!\nSpeakers # Pia Nilsson is a former backend engineer, TDD enthusiast, domain driven design geek and passionate devopser and today I lead the Developer Experience organization at Spotify. The question that keeps me so excited about our work is: how can we enable 1 team to ship 1 product in 1 week? Sebastian Tiggelkamp is a DevOps Engineer at ConSol Software GmbH in Germany with a focus on CI/CD, GitOps and cloud computing. Kaspar von Grünberg, CEO at Humanitec. Kaspar is the founder of Humanitec. He has spent the last 10 years building and running software companies from retail-applications and door-to-door campaigning technology to monitoring and evaluation for NGOs. Legal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\n","date":"17 May 2021","permalink":"/events/sre-munich-spring-online-event-2021/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for May 17th. This edition is going to be super exciting giving you insights into how Backstage works at Spotify as well as a deep dive into how GitOps is making deployments more efficient.","title":"SRE Munich Spring Online Event 2021"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 24th. We will be taking things online again due to the ongoing COVID-19 situation.\nAs we are building the agenda right now, please come back to see what we have lined up for this event.\nAgenda # 18:30 Join the online meeting 18:45 Intro 19:00 Chaos improves Reliability. Resistance is futile. How embracing Chaos Engineering helps building reliable mission critical workloads. Haytham Elkhoja (IBM) 19:45 Open floor, discussion, and questions around the topic 20:30 End Speakers # Haytham Elkhoja is the Chief Architect for IBM Always On . As the technical leader of the Always On practice at IBM, Haytham works with large customers to re-architect mission-critical applications to resilient cloud-native architectures with the aim of achieving the highest levels of service availability, resiliency, and reliability by incorporating continuous availability, site reliability engineering, chaos engineering, cloud platforms and infrastructure automation. Participation # We\u0026rsquo;re always looking for 20-35 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\nSpread The Word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"24 September 2020","permalink":"/events/sre-munich-fall-online-event-2020/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 24th. We will be taking things online again due to the ongoing COVID-19 situation.","title":"SRE Munich Fall Online Event 2020"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 23rd. This time we are taking things online due to the ongoing COVID-19 situation. The topic for this session is “What kind of SRE am I?” - We’ll hear from SREs in Munich and other cities in the world about their experiences of being an SRE.\nAgenda # 18:30 Join the online meeting 18:45 Intro 19:00 SRE Round Table “What SRE means to me and my team?” and \u0026ldquo;What kind of SRE am I?\u0026rdquo; 20:00 Open floor, discussion, and questions around the topic 20:30 End As this is a collective effort to get a glimpse of what SRE means to different people and companies, we encourage the attendees of the meetup to fill out the following survey:\nhttps://forms.gle/4QwpbtqCo9Kbvnys9 We hope that we will get enough samples to perform an analysis and show the results to you in a future meetup.\nParticipation # Ideally, we\u0026rsquo;d like to hear everybody\u0026rsquo;s opinion. However, we\u0026rsquo;ll try to use 2 min slots (depending on the participating) for everybody to give their opinion on the matter. Make sure you\u0026rsquo;re in a quiet environment. As long as you\u0026rsquo;re not speaking to the microphone, keep yourself muted so that the recording won\u0026rsquo;t get accidental background sounds. Please use the chat to ask questions and get your turn.\nWe\u0026rsquo;re always looking for 20-35 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\nSpread The Word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"23 April 2020","permalink":"/events/sre-munich-spring-online-event-2020/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 23rd. This time we are taking things online due to the ongoing COVID-19 situation. The topic for this session is “What kind of SRE am I?","title":"SRE Munich Spring Online Event 2020"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome, Feedback from last Meetup 7:10 pm Talk 1: Intelligent Cloud Operations with AIOps 8:05 pm Short break 8:15 pm Talk 2: The Road to SRE (Instana) 8:45 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Abstracts # Title: Intelligent Cloud Operations with AIOps # Abstract: The field of AIOps, also known as Artificial Intelligence for IT Operations, uses advanced technologies to dramatically improve the monitoring, operation, and troubleshooting of distributed systems. Its main premise is that operations can be automated using monitoring data to reduce the workload of operators (e.g., SREs or production engineers). Our current research explores how AIOps – and many related fields such as deep learning, machine learning, distributed traces, graph analysis, time-series analysis, sequence analysis, advanced statistics, NLP and log analysis – can be explored to effectively detect, localize, predict, and remediate failures in large-scale cloud infrastructures (\u0026gt;50 regions and AZs) by analyzing service management data (e.g., distributed traces, logs, events, alerts, metrics). In particular, this talk will describe how a particular monitoring data structure, called distributed traces, can be analyzed using deep learning to identify anomalies in its spans. This capability empowers operators to quickly identify which components of a distributed system are faulty.\nTitle: The Road to SRE # Abstract: Building and establishing a SRE team is a complex challenge that involves a lot more than just overcoming technical hurdles. Especially in the context of a fast-growing startup there are quite some lessons to be learned. The talk walks through the evolution of the operations/SRE team at Instana. From the early beginnings, having just a handful of well-meaning family and friends customers, winging features and deployments left and right over platform re-architectures and team growth to the present day with customers all around the world to whom we want to offer a frictionless 24/7 availability and product experience. During this time, we doubted, changed and learned a lot of things - some of them obvious, some of them not so much - around tooling, technology, architecture as well as processual and organizational topics.\nSpeakers # Dr. Jorge Cardoso is Chief Architect for Planet-scale AIOps at Huawei’s Ireland and Munich Research Centers. Before, he worked for several major companies such as SAP Research (Germany) on the Internet of Services and the Boeing Company in Seattle (USA) on Enterprise Application Integration. He previously gave lectures at the Karlsruhe Institute of Technology (Germany), University of Georgia (USA), University of Coimbra and University of Madeira (Portugal). His current research involves the development of the next generation of AIOps platforms and Cloud operations tools driven by AI to increase Cloud reliability and resilience. He has a Ph.D. in Computer Science from the University of Georgia (USA). Bastian Spanneberg (@spanneberg) is part of the SRE team at Instana and has seen the company grow and evolve from the early days Participation # We\u0026rsquo;re always looking for 20-35 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal: # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"5 February 2020","permalink":"/events/sre-munich-winter-event-2020/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome, Feedback from last Meetup 7:10 pm Talk 1: Intelligent Cloud Operations with AIOps 8:05 pm Short break 8:15 pm Talk 2: The Road to SRE (Instana) 8:45 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Abstracts # Title: Intelligent Cloud Operations with AIOps # Abstract: The field of AIOps, also known as Artificial Intelligence for IT Operations, uses advanced technologies to dramatically improve the monitoring, operation, and troubleshooting of distributed systems.","title":"SRE Munich at Google 2020"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup 7:10 pm Talk 1: Recap SREcon 2019 EMEA (Ingo Averdunk, Pavlos Ratis) 7:40 pm Short break 7:45 pm Talk 2: Scaling to support thousands of BGP peerings in a SaaS environment (Costas Drogos) 8:15 pm SRE Quiz (!) + Networking + Drinks 9:00 pm Leave happy and inspired :) Speakers # Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Dan is an Engineering Manager at Google and future space traveler. Pavlos Ratis is a Site Reliability Engineer at HolidayCheck and maintainer of the Awesome SRE repository ( https://github.com/dastergon/awesome-sre) . Costas is working as a Site Reliability Engineer for Kentik\u0026rsquo;s Operations team, maintaining a sizeable hybrid infrastructure that hosts Kentik\u0026rsquo;s realtime, SaaS network analytics platform. His interests lie where the network, systems and software meet and lately he\u0026rsquo;s finding DevOps and SRE paradigms to allow for a perfect combination of the above. Lately he\u0026rsquo;s trying to get more familiar with the Cloud side of things to in order to increase the uniformity in Kentik\u0026rsquo;s hybrid infrastructure, but for now he\u0026rsquo;s mostly trying to read behind the buzzwords. Abstracts # Recap SREcon 2019 EMEA: Once a year, SREcon gathers the community of SREs to share experience and learn from each other. This will be a recap of SREcon EMEA 2019 (October 02-04, Dublin, Ireland) . Key themes of the conference were Comprehension, Understandability, and Predictability. Ingo and Pavlos will share their observations from the conference, and highlight several sessions worth listening to as a replay. Kentik utilizes multiple auxiliary sources to enrich ingested flow, with the most prominent of them being data sourced from BGP peerings. In this presentation we\u0026rsquo;ll go through all the different generations of the setup, the challenges and the requirements we had to work with at each step of process, in order to be able to scale to more than 4000 IPv4 + IPv6 BGP sessions today. Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nSlides # Recap SREcon19 Europe Legal # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"28 November 2019","permalink":"/events/sre-munich-autumn-event-2019/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup 7:10 pm Talk 1: Recap SREcon 2019 EMEA (Ingo Averdunk, Pavlos Ratis) 7:40 pm Short break 7:45 pm Talk 2: Scaling to support thousands of BGP peerings in a SaaS environment (Costas Drogos) 8:15 pm SRE Quiz (!","title":"SRE Munich at Google 2019"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda: # 6:30 pm Get Together with food and drinks 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Canary Releases with Traefik on GKE, Periklis Tsirakidis 7:45 pm Talk 2: Anatomy of a SRE and DevOps transformation, Aymeric Gerardin 8:15 pm Talk 3: Recap SREcon 2019 Americas, Ingo Averdunk 8:30 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Speakers # Periklis Tsirakidis worked for the last 9 years on various infrastructure as a code projects for distributed systems. Currently member of the Platform Engineering Group at Holidaycheck with focus on the self-service platform based on Kubernetes and GCP. Aymeric Gerardin, Departement manager Data management Site Reliability engineering @Amadeus. IT leader in Data Solutions, actively integrating and running new technology platforms and transforming organizations into SRE and DevOps Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Dan is an Engineering Manager at Google and future space traveler. Abstracts # Canary Releases with Traefik on GKE: Periklis shares with us how Traefik helped HolidayCheck shape their cloud ecosystem. In particular, he will give a brief in-depth introduction on how they implemented their canary release process for our microservice architecture with Traefik on Google Kubernetes Engine (GKE). Anatomy of a SRE and DevOps transformation: Keeping your IT service organization in the state of the art is key for the company success. 3 years ago we started our SRE and DevOps journey. With 3000+ infrastrucutre nodes, a legacy task based organization and a clear split between Operations and Development it promised to be a chalenging journey\u0026hellip; And it was! Come and deep dive with us in this mindset, skill set, organizational and processes revolution. From our initial plan to the current setup we will share with you the good, the bad and the ugly Recap SREcon 2019 Americas: Once a year, SREcon gathers the community of SREs to share experience and learn from each other. This will be a recap of SREcon Americas 2019 (March 25-27, Brooklyn) . Key themes of the conference were Comprehension, Understandability, and Predictability. Ingo will share his observations from the conference, and highlight several session worth listening to as a replay. Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"27 June 2019","permalink":"/events/sre-munich-summer-event-2019/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda: # 6:30 pm Get Together with food and drinks 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Canary Releases with Traefik on GKE, Periklis Tsirakidis 7:45 pm Talk 2: Anatomy of a SRE and DevOps transformation, Aymeric Gerardin 8:15 pm Talk 3: Recap SREcon 2019 Americas, Ingo Averdunk 8:30 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Speakers # Periklis Tsirakidis worked for the last 9 years on various infrastructure as a code projects for distributed systems.","title":"SRE Munich at EGYM 2019"},{"content":"Hey folks! We’re excited to announce the Nikolaus Winter Event of the Site Reliability Engineering Munich Meetup group.\nAgenda # 7:00 pm Get Together with food and drinks, sponsored by Holidaycheck 7:30 pm Welcome, Sponsor Message (Dan, Ingo, Pavlos) 7:40 pm Implementing Distributed Consensus (Dan) 8:30 pm Game \u0026amp; Prizes! \u0026ldquo;How fast are computers?\u0026rdquo; (Ingo) 9:05 pm Post Mortem of the Month / Tales from On-call (Everyone) 9:10 pm Networking + Drinks 9:30 pm Leave happy and inspired :) Speakers # Pavlos Ratis is a Site Reliability Engineer at HolidayCheck in Munich and maintains the Awesome SRE repository ( https://github.com/dastergon/awesome-sre) . Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Dan is Team Lead SRE \u0026amp; Infrastructure at eGym and dreams of space travel. Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLocation # HolidayCheck Munich Office ( https://goo.gl/maps/AYv9K3osBr62 )\nPublic Transportation # Ten minute walk from S-Bahn Leuchtenbergring https://goo.gl/maps/aa5h5Mbo5zD2 Five minute walk from Bus Stop Neumarkter Straße https://goo.gl/maps/moa7h3xZkxG2 Parking: Very limited, unfortunately: https://bit.ly/2DbMHZf Legal # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"6 December 2018","permalink":"/events/sre-munich-nikolaus-winter-event-2018/","section":"Events","summary":"Hey folks! We’re excited to announce the Nikolaus Winter Event of the Site Reliability Engineering Munich Meetup group.\nAgenda # 7:00 pm Get Together with food and drinks, sponsored by Holidaycheck 7:30 pm Welcome, Sponsor Message (Dan, Ingo, Pavlos) 7:40 pm Implementing Distributed Consensus (Dan) 8:30 pm Game \u0026amp; Prizes!","title":"SRE Munich at HolidayCheck 2018"},{"content":"We’re excited to announce the second Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get Together with food and drinks, sponsored by eGym GmbH 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Maintaining Reliability with Canary Testing, Pavlos Ratis (HolidayCheck) 7:45 pm Talk 2: Distributed Tracing in Production, Michael Würtinger (eGym) 8:15 pm Post Mortem of the Month / Tales from On-call (TBD) 8:20 pm Networking + Drinks 9:00 pm Leave happy and inspired :)\nSpeakers # Pavlos Ratis is a Site Reliability Engineer at HolidayCheck in Munich and maintainer of the Awesome SRE repository ( https://github.com/dastergon/awesome-sre) . Michael Würtinger is technology fellow and Site Reliability Engineer at eGym. He is driving forward the adoption of Distributed Tracing and other observability methods within eGym. Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Dan is the Technical Lead of SRE at eGym, first-time Meetup organizer, and future space traveler. Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLocation # eGym GmbH, Prannerstr. 2-4, 80333 München\nPublic Transportation # 5 minutes walk from Odeonsplatz ( https://goo.gl/maps/HZCVGAA99py ) 4 minutes walk from Theatinerstraße ( https://goo.gl/maps/ytR5k9hNW8B2 ) 7 minutes walk from Marienplatz ( https://goo.gl/maps/EFR7WLJ3qMG2 ) Parking: https://www.parkopedia.de/parking/locations/prannerstra ße_munich_germany_u281z7g6bhg Slides # Canary Testing Distributed Tracing Recordings # Canary Testing by Pavlos Ratis: https://www.youtube.com/watch?v=Z9Hs6XCuNV8 Distributed Tracing by Michael Würtinger: https://www.youtube.com/watch?v=_iwpPHzvVC8 Legal # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule Spread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"25 September 2018","permalink":"/events/sre-munich-summer-event-2018/","section":"Events","summary":"We’re excited to announce the second Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get Together with food and drinks, sponsored by eGym GmbH 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Maintaining Reliability with Canary Testing, Pavlos Ratis (HolidayCheck) 7:45 pm Talk 2: Distributed Tracing in Production, Michael Würtinger (eGym) 8:15 pm Post Mortem of the Month / Tales from On-call (TBD) 8:20 pm Networking + Drinks 9:00 pm Leave happy and inspired :)","title":"SRE Munich at EGYM 2018"},{"content":"We’re excited to announce the first Meetup of the Site Reliability Engineering Munich group. We are overwhelmed by the number of people who joined the group, even before we had the time to advertise it. You guys rock! Our first event shall be known as the launch event and may contain bugs :) Feedback welcome!\nAgenda # 6:30 pm Get Together with food and drinks, sponsored by eGym GmbH 7:00 pm Welcome and Kick-off (Ingo, danrl) 7:30 pm Recap - SREcon 2018 (Ingo, danrl) 8:00 pm Continuous performance profiling in production environments (Dmitri Melikyan) 8:30 pm Post Mortem of the Month / Tales from On-call (Ingo) 8:35 pm Networking + Drinks 9:00 pm Go home inspired! [End of Event ;)] Speakers # Dmitri is a software engineer and the founder of StackImpact, where he is working on performance profiling and monitoring tools. Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Dan is a Technical Lead SRE at eGym, first-time Meetup organizer, and future space traveler. Participation # We\u0026rsquo;re always looking for 20-30 minute technical talks (and 5-8 minute lightning talks) relating to the very broad field of Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLocation # eGym GmbH, Prannerstr. 2-4, 80333 München\nPublic Transportation # 5 minutes walk from Odeonsplatz ( https://goo.gl/maps/HZCVGAA99py ) 4 minutes walk from Theatinerstraße ( https://goo.gl/maps/ytR5k9hNW8B2 ) 7 minutes walk from Marienplatz ( https://goo.gl/maps/EFR7WLJ3qMG2 ) Parking: https://www.parkopedia.de/parking/locations/prannerstra%C3%9Fe_munich_germany_u281z7g6bhg/?country=de\u0026arriving=201805031830\u0026leaving=201805032100 Slides # Launch event slides Recordings # Launch Event: https://www.youtube.com/watch?v=2lHpP6vgFDk Continuous Performance Profiling: https://www.youtube.com/watch?v=6UI02MTyncc Legal # There may be audio and video recordings of talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\nSpread the word! Feel free to refer to this Meetup via #sremuc on social media!\n","date":"3 May 2018","permalink":"/events/sre-munich-launch-event-2018/","section":"Events","summary":"We’re excited to announce the first Meetup of the Site Reliability Engineering Munich group. We are overwhelmed by the number of people who joined the group, even before we had the time to advertise it.","title":"SRE Munich at EGYM 2018"},{"content":"Organizers # Looking for a way to contact us? Write us an email: muc@sre.xyz Active Organizers # Ingo Averdunk # Twitter: https://twitter.com/ingoa LinkedIn: https://de.linkedin.com/in/ingoaverdunk Blog: https://ingoaverdunk.wordpress.com/about/ Kordian Bruck # Twitter: https://twitter.com/kordianbruck LinkedIn: https://de.linkedin.com/in/kordianbruck Christian Rebischke # Twitter: https://twitter.com/sh1bumi LinkedIn: https://linkedin.com/in/shibumi Blog: https://shibumi.dev E-Mail: chris@shibumi.dev Alumni # Pavlos Ratis # Twitter: https://twitter.com/dastergon LinkedIn: https://linkedin.com/in/pavlosratis Blog: https://dastergon.gr/ Dan Luedtke # Blog: https://danrl.com/ ","date":"1 January 0001","permalink":"/organizers/","section":"SRE MUC","summary":"Organizers # Looking for a way to contact us? Write us an email: muc@sre.xyz Active Organizers # Ingo Averdunk # Twitter: https://twitter.com/ingoa LinkedIn: https://de.linkedin.com/in/ingoaverdunk Blog: https://ingoaverdunk.wordpress.com/about/ Kordian Bruck # Twitter: https://twitter.","title":""},{"content":"","date":"1 January 0001","permalink":"/authors/","section":"Authors","summary":"","title":"Authors"},{"content":"","date":"1 January 0001","permalink":"/categories/","section":"Categories","summary":"","title":"Categories"},{"content":"","date":"1 January 0001","permalink":"/tags/","section":"Tags","summary":"","title":"Tags"}] \ No newline at end of file +[{"content":"","date":"7 July 2024","externalUrl":null,"permalink":"/events/","section":"Events","summary":"","title":"Events","type":"events"},{"content":"","date":"7 July 2024","externalUrl":null,"permalink":"/","section":"SRE MUC","summary":"","title":"SRE MUC","type":"page"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for July 10th. This time around we will be meeting at Celonis . Let\u0026rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!). Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters. Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag! You can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Celonis welcomes you to SREmuc 7:10 pm Talk 1: Upgrading thousands of stateful applications across a global Kubernetes infrastructure (Michael Lex, ClickHouse) 7:40 pm Talk 2: Lessons learned from 15 years DevOps (Paul Stack, System Initiative) 8:30 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Abstracts # Talk 1: Upgrading thousands of stateful applications across a global Kubernetes infrastructure (Michael Lex, ClickHouse) # How do you upgrade thousands of similar but independent stateful applications running ClickHouse in a controlled way, across tens of regions in all major cloud providers? Full automation is a must - at that scale manual toil is time consuming and error prone. Full control is necessary as well - on-call engineers need to interact with the automation to pause the rollout, resume it or roll back. And most important: the automation needs to be safe - taking into account signals from monitoring systems to automatically detect problems caused by the rollout (and react to them in an appropriate way). A full rollout can take several days - potentially weeks. So any automation must be able to deal with interruptions, intermittent upgrades or even temporary downtime of the automation system itself. With Temporal.io and its \u0026ldquo;durable execution\u0026rdquo; paradigm, the rollout automation system developed for the ClickHouse Cloud addresses all those concerns.\nMichael Lex is a seasoned engineer who has worked in various fields ranging from consulting to fast-paced startups. He currently works as an Engineering Manager at Clickhouse where he and his team work on friction-less deployments of stateful applications for thousands of customers.\nSlides: Not yet, stay tuned :)\nTalk 2: Lessons learned from 15 years DevOps (Paul Stack, System Initiative) # It\u0026rsquo;s almost 15 years since the inception of DevOps. The core value of DevOps was to break down the silos and improve communication to achieve stability, reliability, availability, and security. In the boom of the ecosystem since that point, it sometimes feels like we\u0026rsquo;ve created more silos and stemmed communication in every way with the tooling we have. What if we take the lessons we’ve learned along the way and try to reimagine DevOps tooling to fulfill the original promise of the DevOps movement? What if we could remove the 200% problem (the need to know a specialist language AND a cloud framework) from our tooling? What if we could focus on delivery in a collaborative manner rather than communicating via a series of handoffs via pull requests? It’s time for a second wave of DevOps tools.\nIn this talk, Paul is going to reflect on the lessons we\u0026rsquo;ve learned along the DevOps journey, for example Infrastructure as Code, and talk about the work System Initiative is doing to revolutionize how people collaborate to build and maintain complex infrastructure. System Initiative is the beginning of an ecosystem to create a real-time, multiplayer, multi-modal reinvention of DevOps tooling. System Initiative provides a modern, state of the art approach to infrastructure management that increases productivity with its simulation-based workflow.\nOnce you see what it’s possible to achieve, you won’t want to settle any longer.\nPaul Stack is an infrastructure coder and has spoken at various events throughout the world about his passion for continuous integration, continuous delivery and good operational procedures and why they should be part of what developers and system administrators do on a day to day basis. He believes that reliably delivering software is more important than its development. Paul’s passions are the DevOps and Continuous Delivery movements and how they help the entire business and its customers.\nSlides: Not yet, stay tuned :)\nPhotos # Not yet, stay tuned :)\nParticipation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\n","date":"7 July 2024","externalUrl":null,"permalink":"/events/sre-munich-summer-event-2024/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for July 10th. This time around we will be meeting at Celonis . Let\u0026rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!","title":"SRE Munich at Celonis 2024","type":"events"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 25th from 6:30 PM to 9:30 PM CEST at Jambit in Munich. Let\u0026rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!). Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters. Please help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag. You can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc 7:10 pm Talk 1: Simplicity in the Source (Markus Teich, Google) 7:40 pm Talk 2: Enough Go, what about Rust? (Mario Ortiz Manero, Lyft) 8:10pm Talk 3: Recap SREcon Americas (Ingo Averdunk, IBM) 8:45 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Abstracts # Talk 1: Simplicity in the Source (Markus Teich, Google) # Markus has been an SRE and software engineer at Google for close to 7 years. In his open source endeavours he learned a few things about running open source software and how code simplicity can help with long term maintenance. As an SRE at Google Markus has looked through many different types of code bases across various languages. In this talk he\u0026rsquo;ll share some of his observations on how code can be easier to understand and how that can help with incident management and maintenance.\nSlides: Simplicity in the Source\nTalk 2: Enough Go, what about Rust? (Mario Ortiz Manero, Lyft) # Working on the open source project Tremor - an event processing system - Mario has gathered some good knowledge about using rust to write production systems that can scale. He is going to give us valuable insights when Rust is a great language to use and where it can possibly win over the hearts of dedicated Gophers.\nSlides: Enough Go, what about Rust?\nTalk 3: Recap SREcon Americas (Ingo Averdunk, IBM) # Following the theme from previous years, Ingo will recap SREcon 2024 Americas. Just like speed dating, Ingo will attempt to collapse 3 conference days into a 30-minute session. The objective is to provide food for thought and to encourage listening to the playback of interesting sessions.\nSlides: Recap SRECon Americas\nPhotos # Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\n","date":"19 March 2024","externalUrl":null,"permalink":"/events/sre-munich-spring-event-2024/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 25th from 6:30 PM to 9:30 PM CEST at Jambit in Munich. Let\u0026rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!","title":"SRE Munich at Jambit 2024","type":"events"},{"content":"We\u0026rsquo;re co-hosting with Grafana \u0026amp; Friends meetup group https://www.meetup.com/grafana-and-friends-munich/. Come and see new faces!\nThis time around we will be meeting at Nordcloud in their Highlight Towers location Let\u0026rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!).\nMeetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.\nPlease help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!\nYou can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc and Grafana\u0026amp;Friends 7:05 pm Talk 1: Philosophy of Observability (Richard Hartmann, Grafana Labs) 7:35 pm Talk 2: Navigating Observability with OTel and Grafana: A Strategic Overview (Nadya Shakhat, Nordcloud) 8:10 pm Talk 3: Navigating the Nuances of GitOps in an Enterprise Environment (Bernard Halas, Berops) 8:45 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Abstracts # Talk 1: Philosophy of Observability # About the speaker: Richard Hartmann is Director of Community at Grafana Labs\nNo slides, as this was an open discussion and history lesson.\nTalk 2: Navigating Observability with OTel and Grafana: A Strategic Overview # In this presentation we are going to dive into the interplay between OpenTelemetry (OTel) and Grafana within the AWS landscape. We\u0026rsquo;ll focus on the challenges and solutions for scaling OTel collectors and Grafana agents, with a special emphasis on the challenges of tracing sampling. This talk is tailored to shed light on creating a scalable, robust observability framework in cloud-native environments, and will also touch on the different deployment scenarios, balancing technical depth with practical insights.\nAbout the speaker: Nadya Shakhat, a Cloud Architect at Nordcloud and a certified GCP Professional Architect and Data Engineer, brings a decade of experience in software development, DevOps and observability. Her journey includes significant contributions to open-source projects like OpenStack, particularly as a core contributor to the OpenStack Telemetry project. At Nordcloud and IBM, Nadya focuses on crafting scalable data and observability solutions for diverse clientele, leveraging her deep expertise in monitoring and cloud technologies.\nSlides: Navigating Observability with OTel and Grafana\nTalk 3: Navigating the Nuances of GitOps in an Enterprise Environment # GitOps has emerged as a leading approach for infrastructure management, but its implementation can be challenging due to the diversity of tools, legacy systems, and organizational factors involved. This talk will delve into the common pitfalls and complexities of large-scale GitOps deployments, exploring strategies to streamline operations without compromising flexibility. We\u0026rsquo;ll address technical aspects, architectural considerations, security implications, work methodologies, organizational structures, and the role of Developer Experience (DevEx) in shaping a successful GitOps implementation.\nAbout the Speaker: Bernard\u0026rsquo;s professional career has been growing at an intersection of networking, SW engineering and infra-engineering fields. He used to run an ISP (Internet Service Provider) company as a hobby and that\u0026rsquo;s where his love for the Linux ecosystem sparked. This has naturally evolved through DevOps-like roles into cloud platform engineering nowadays. He is leading a team of Kubernetes consultants with a focus on on-prem and hybrid-cloud platforms.\nSlides: Navigating Nuances of GitOps\nPhotos # Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\n","date":"7 February 2024","externalUrl":null,"permalink":"/events/sre-munich-winter-event-2024/","section":"Events","summary":"We\u0026rsquo;re co-hosting with Grafana \u0026amp; Friends meetup group https://www.meetup.com/grafana-and-friends-munich/. Come and see new faces!\nThis time around we will be meeting at Nordcloud in their Highlight Towers location Let\u0026rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!","title":"SRE+Grafana Munich at nordcloud 2024","type":"events"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 26th.\nThis time around we will be meeting at Google in their Isarvalley event space! Lets all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!).\nMeetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.\nPlease help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag! You can reach the organizers at muc@sre.xyz (Ideas, Presentations, Comments)\nPlease note: Google requires us to register all guests with their real name. Please have a valid ID card with you, so you can be let into the building. Make sure your Meetup account names match your ID.\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc 7:05 pm Talk 1: Postmortem Culture at Google (Martin Höfling, Google) 7:40 pm Short break 8:00 pm Talk 2: Eliminating human error using self-service GitOps with Crossplane (Stéphane Di Cesare and Christopher Haar, DKB) 8:30 pm Talk 3: General Discussion 8:45 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Speakers # Martin Höfling is a Technical Program Manager at Google. Stéphane Di Cesare is a Senior Platform Engineer at DKB, where he is focusing on improving the developer experience and the developer acceptance of the internal platform. He also has a consulting background. Christopher Haar is Platform Tech Lead at DKB, where he is responsible of determining the technologies used by the internal platform. He is also one of the maintainers of the Crossplane open source project. Topics # Postmortem Culture at Google # Postmortems are one of the key tools of SREs to not repeat the same mistakes and learn from past incidents. This introductory talk explains how to write a good Postmortem that can strengthen company culture when mistakes happen. Martin has been working in SRE at Google for many years now and will give you an insight into how Google does Postmortems.\nSlides: Post Mortem Culture at Google\nEliminating human error using self-service GitOps with Crossplane # In this talk, we are going to present what the typical challenges of a Platform team are. We will highlight the importance of self-service GitOps in a banking environment, and will explain how these principles are implemented at DKB, using the open source projects Crossplane and Flux. Speaker\nSlides: Eliminating human error using self-service GitOps with Crossplane\nOpen Discussion # Following the theme we started in our last Meetup, we want to discuss certain topics that the SRE community might be interested in. Examples could be the recent license change in Terraform, or the application of Generative AI in the field of Operations. We look forward to engaging in insightful conversations, fostering mutual learning, and collectively expanding our knowledge base.\nSlides: Meetup Intro \u0026amp; Open Discussion\nPhotos # Legal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\n","date":"7 September 2023","externalUrl":null,"permalink":"/events/sre-munich-summer-fall-event-2023/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 26th.\nThis time around we will be meeting at Google in their Isarvalley event space!","title":"SRE Munich at Google 2023","type":"events"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for June 13th.\nThis time around we will be meeting at Netlight as they have graciously agreed to host us! Lets all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!). Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.\nWe would like to thank Netlight Consulting for sponsoring this event and catering it!\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc 7:10 pm Talk 1: Exercising Effective Incident Response and Disaster Recovery Plan via Gamedays (Thanos Amoutzias, VW Elli) 7:30 pm Talk 2: Building Resilient Event-Driven Systems with GCP Pub/Sub: Key Reliability Considerations (Saadi Myftija, Netlight) 8:00 pm Short break 8:15 pm Talk 3: Eliminating human error using self-service GitOps with Crossplane (Stéphane Di Cesare and Christopher Haar, DKB) 8:45 pm Networking + Drinks 9:30 pm Leave happy and inspired :) Speakers # Thanos Amoutzias is a Software Engineer and SRE Lead at VW Elli. He is passionate about building reliable services and delivering impactful products. You can find him on LinkedIn and in the mountains. Saadi Myftija is a consultant at Netlight, focusing on backend and cloud engineering. He\u0026rsquo;s currently working as tech lead in the EV charging platform team at VW Elli. Stéphane Di Cesare is a Senior Platform Engineer at DKB, where he is focusing on improving the developer experience and the developer acceptance of the internal platform. He also has a consulting background. Christopher Haar is Platform Tech Lead at DKB, where he is responsible of determining the technologies used by the internal platform. He is also one of the maintainers of the Crossplane open source project. Abstracts # Talk 1 # How can I start practicing Gamedays at my company? In this talk we are going to dive deeper into the organization of the event, from identifying incidents to run, execution and logistics to disaster recovery. Lastly, we will have a look at results and feedback we have received.\nSlides /slides/2023_06/gamedays.pdf\nTalk 2 # Event-driven architecture (EDA) is a common pattern in building modern service-oriented applications. It helps decoupling system components, which enables scaling, updating and deploying them independently. However, EDA comes with its own set of challenges and trade-offs. In this presentation we\u0026rsquo;ll talk about reliability considerations around GCP Pub/Sub, our event broker of choice to implement EDA. We\u0026rsquo;ll mainly focus on publisher reliability and how to monitor it, dead-letter queues and message retrying.\nTalk 3 # In this talk, we are going to present what the typical challenges of a Platform team are. We will highlight the importance of self-service GitOps in a banking environment, and will explain how these principles are implemented at DKB, using the open source projects Crossplane and Flux.\nPhotos # Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nSlides # Will be added after the event\nLegal # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule\nSpread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"23 May 2023","externalUrl":null,"permalink":"/events/sre-munich-spring-event-2023/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for June 13th.\nThis time around we will be meeting at Netlight as they have graciously agreed to host us!","title":"SRE Munich at Netlight 2023","type":"events"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for February 13th. This time around we will be meeting at MaibornWolff as they have graciously agreed to host us! Lets all meet up once again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!). Meetups are about engaging within the community, so we are looking to everyone to share ideas and learn to ultimately to reduce the risk of disasters.\nWe would like to thank MaibornWolff for sponsoring this event and catering it!\nPlease help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!\nYou can reach the organizers at muc@sre.xyz\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc 7:15 pm Talk 1: …and now it is yours! Building reliable and maintainable platforms for customers (Maximilian Schaugg, Martin Zehetmayer) 7:45 pm Short break 8:00 pm Talk 2: Simplifying Development and Testing Infrastructure with mirrord (Tal Zwick, MetalBear) 8:30 pm Talk 3: Recap SREcon 2022 Europe 8:45 pm Networking + Drinks 9:30 pm Leave happy and inspired :) Speakers # Maximilian Schaugg, MaibornWolff Martin Zehetmayer, MaibornWolff Tal Zwick, MetalBear Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Abstracts # Talk 0 # Kordian Bruck (Google) and Ingo Averdunk (IBM) introduced the location and topics for today.\nSlides: /slides/KickOff.pdf\nTalk 1 # Building a reliable and maintainable platform is hard, even if you have a large amount of people and resources available. Let’s imagine, you need to build a platform, which you have to hand over to someone else — immediately your bar is set higher. Let us show you methodologies, how to find the right tools for a cloud-native project, common problems as well as what you need to tackle, in order to make the platform operable for your customer.\nLearn from real project stories and receive practical hints for using CNCF products for a ready-to-operate platform.\nSlides: /slides/building_reliable_and_maintainable_platform.pdf\nTalk 2 # Organizations that build and deploy cloud-native software are faced with the challenge of building and maintaining infrastructure for the development and testing of their software. Development ergonomics and testing quality tend to be at odds with keeping costs and complexity low. mirrord “mirrors” the environment of a Kubernetes cluster to local processes in real-time. We’ll explore how organizations can employ mirrord to give their developers the best cloud development experience, all while simplifying the development infrastructure.\nSlides: /slides/mirrord.pdf\nTalk 3 # A recap of SREcon 2022 Europe.\nSlides: /slides/recap.pdf\nPhotos # Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\n","date":"13 February 2023","externalUrl":null,"permalink":"/events/sre-munich-winter-event-2023/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for February 13th. This time around we will be meeting at MaibornWolff as they have graciously agreed to host us!","title":"SRE Munich at MaibornWolff 2023","type":"events"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for October 13th.\nAfter many months of virtual events and meetings, this edition finally reverts to an in-person event. We will learn about the SRE practice in Munich, as well as key themes of the global SRE community. On this day, want to engage with and learn from each other, to reduce the risk of disasters (hint !).\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome to SREmuc 7:10 pm Talk 1: SRE at SIXT at a glance (Andreas Klinger, SIXT) 7:45 pm Short break 8:00 pm Talk 2: How Google got to rolling Linux releases for Desktops (Kordian Bruck, Google) 8:30 pm Talk 3: Recap SREcon Americas (Ingo Averdunk, IBM) 9:00 pm Networking + Drinks 9:30 pm Leave happy and inspired :) We would like to thank SIXT Autovermietung for sponsoring this event.\nPlease help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!\nSpeakers and Abstracts # Talk 1 # Andreas Klinger and team will give us an overview on SRE at SIXT. Starting with the overall roadmap of SRE at SIXT, Andreas will zoom into details on platform security (AMI re-rolling, Image scanning via Crowdstrike), deployments via CI Bot and service discovery, as well as the use of OPA for Kafka Authorization and Authentication.\nTalk 2 # Kordian Bruck will present How Google got to rolling Linux releases for Desktops. At Google, we run large production fleets that serve Google products like YouTube and Gmail. To support all our employees, including engineers, we also run a sizable corporate fleet with hundreds of thousands of devices across multiple platforms, models, and locations. To let each Googler work in the environment they are most productive in, we operate many OS-platforms including a Linux system. For a long time, our internal-facing Linux distribution, Goobuntu, was based off of Ubuntu LTS releases. In 2018 we completed a move to a rolling release model based on Debian.\nTalk 3 # Following the theme from previous years, Ingo Averdunk will recap SREcon 2022 Americas. Just like speed dating, Ingo will attempt to collapse 3 conference days into a 30 min session. The objective is to provide food for thought, and to encourage listening to the playback of interesting sessions.\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded or photographed.\n","date":"13 October 2022","externalUrl":null,"permalink":"/events/sre-munich-fall-event-2022/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for October 13th.\nAfter many months of virtual events and meetings, this edition finally reverts to an in-person event.","title":"SRE Munich at Sixt 2022","type":"events"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for May 17th. This edition is going to be super exciting giving you insights into how Backstage works at Spotify as well as a deep dive into how GitOps is making deployments more efficient.\nAgenda: # ** 19:00 - Join, Chit Chat and Introductions ** 19:15 - Pia Nilsson, Ben Lambert (Spotify) - Backstage.io Intro + Demo ** 19:45 - Sebastian Tiggelkamp (Consol) - GitOps + Demo ** 20:15 - Kaspar von Grünberg (Humanitec) - Developer self-service with Internal Developer Platforms ** 20:30 - Open floor, discussions and questions, Open End\nPlease help to spread The Word! Feel free to post this event on social media using the #sremuc hashtag!\nSpeakers # Pia Nilsson is a former backend engineer, TDD enthusiast, domain driven design geek and passionate devopser and today I lead the Developer Experience organization at Spotify. The question that keeps me so excited about our work is: how can we enable 1 team to ship 1 product in 1 week? Sebastian Tiggelkamp is a DevOps Engineer at ConSol Software GmbH in Germany with a focus on CI/CD, GitOps and cloud computing. Kaspar von Grünberg, CEO at Humanitec. Kaspar is the founder of Humanitec. He has spent the last 10 years building and running software companies from retail-applications and door-to-door campaigning technology to monitoring and evaluation for NGOs. Legal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\n","date":"17 May 2021","externalUrl":null,"permalink":"/events/sre-munich-spring-online-event-2021/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for May 17th. This edition is going to be super exciting giving you insights into how Backstage works at Spotify as well as a deep dive into how GitOps is making deployments more efficient.","title":"SRE Munich Spring Online Event 2021","type":"events"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 24th. We will be taking things online again due to the ongoing COVID-19 situation.\nAs we are building the agenda right now, please come back to see what we have lined up for this event.\nAgenda # 18:30 Join the online meeting 18:45 Intro 19:00 Chaos improves Reliability. Resistance is futile. How embracing Chaos Engineering helps building reliable mission critical workloads. Haytham Elkhoja (IBM) 19:45 Open floor, discussion, and questions around the topic 20:30 End Speakers # Haytham Elkhoja is the Chief Architect for IBM Always On . As the technical leader of the Always On practice at IBM, Haytham works with large customers to re-architect mission-critical applications to resilient cloud-native architectures with the aim of achieving the highest levels of service availability, resiliency, and reliability by incorporating continuous availability, site reliability engineering, chaos engineering, cloud platforms and infrastructure automation. Participation # We\u0026rsquo;re always looking for 20-35 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\nSpread The Word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"24 September 2020","externalUrl":null,"permalink":"/events/sre-munich-fall-online-event-2020/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 24th. We will be taking things online again due to the ongoing COVID-19 situation.","title":"SRE Munich Fall Online Event 2020","type":"events"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 23rd. This time we are taking things online due to the ongoing COVID-19 situation. The topic for this session is “What kind of SRE am I?” - We’ll hear from SREs in Munich and other cities in the world about their experiences of being an SRE.\nAgenda # 18:30 Join the online meeting 18:45 Intro 19:00 SRE Round Table “What SRE means to me and my team?” and \u0026ldquo;What kind of SRE am I?\u0026rdquo; 20:00 Open floor, discussion, and questions around the topic 20:30 End As this is a collective effort to get a glimpse of what SRE means to different people and companies, we encourage the attendees of the meetup to fill out the following survey:\nhttps://forms.gle/4QwpbtqCo9Kbvnys9\nWe hope that we will get enough samples to perform an analysis and show the results to you in a future meetup.\nParticipation # Ideally, we\u0026rsquo;d like to hear everybody\u0026rsquo;s opinion. However, we\u0026rsquo;ll try to use 2 min slots (depending on the participating) for everybody to give their opinion on the matter. Make sure you\u0026rsquo;re in a quiet environment. As long as you\u0026rsquo;re not speaking to the microphone, keep yourself muted so that the recording won\u0026rsquo;t get accidental background sounds. Please use the chat to ask questions and get your turn.\nWe\u0026rsquo;re always looking for 20-35 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\nSpread The Word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"23 April 2020","externalUrl":null,"permalink":"/events/sre-munich-spring-online-event-2020/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 23rd. This time we are taking things online due to the ongoing COVID-19 situation. The topic for this session is “What kind of SRE am I?","title":"SRE Munich Spring Online Event 2020","type":"events"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome, Feedback from last Meetup 7:10 pm Talk 1: Intelligent Cloud Operations with AIOps 8:05 pm Short break 8:15 pm Talk 2: The Road to SRE (Instana) 8:45 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Abstracts # Title: Intelligent Cloud Operations with AIOps # Abstract: The field of AIOps, also known as Artificial Intelligence for IT Operations, uses advanced technologies to dramatically improve the monitoring, operation, and troubleshooting of distributed systems. Its main premise is that operations can be automated using monitoring data to reduce the workload of operators (e.g., SREs or production engineers). Our current research explores how AIOps – and many related fields such as deep learning, machine learning, distributed traces, graph analysis, time-series analysis, sequence analysis, advanced statistics, NLP and log analysis – can be explored to effectively detect, localize, predict, and remediate failures in large-scale cloud infrastructures (\u0026gt;50 regions and AZs) by analyzing service management data (e.g., distributed traces, logs, events, alerts, metrics). In particular, this talk will describe how a particular monitoring data structure, called distributed traces, can be analyzed using deep learning to identify anomalies in its spans. This capability empowers operators to quickly identify which components of a distributed system are faulty.\nTitle: The Road to SRE # Abstract: Building and establishing a SRE team is a complex challenge that involves a lot more than just overcoming technical hurdles. Especially in the context of a fast-growing startup there are quite some lessons to be learned. The talk walks through the evolution of the operations/SRE team at Instana. From the early beginnings, having just a handful of well-meaning family and friends customers, winging features and deployments left and right over platform re-architectures and team growth to the present day with customers all around the world to whom we want to offer a frictionless 24/7 availability and product experience. During this time, we doubted, changed and learned a lot of things - some of them obvious, some of them not so much - around tooling, technology, architecture as well as processual and organizational topics.\nSpeakers # Dr. Jorge Cardoso is Chief Architect for Planet-scale AIOps at Huawei’s Ireland and Munich Research Centers. Before, he worked for several major companies such as SAP Research (Germany) on the Internet of Services and the Boeing Company in Seattle (USA) on Enterprise Application Integration. He previously gave lectures at the Karlsruhe Institute of Technology (Germany), University of Georgia (USA), University of Coimbra and University of Madeira (Portugal). His current research involves the development of the next generation of AIOps platforms and Cloud operations tools driven by AI to increase Cloud reliability and resilience. He has a Ph.D. in Computer Science from the University of Georgia (USA). Bastian Spanneberg (@spanneberg) is part of the SRE team at Instana and has seen the company grow and evolve from the early days Participation # We\u0026rsquo;re always looking for 20-35 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal: # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule\nSpread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"5 February 2020","externalUrl":null,"permalink":"/events/sre-munich-winter-event-2020/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome, Feedback from last Meetup 7:10 pm Talk 1: Intelligent Cloud Operations with AIOps 8:05 pm Short break 8:15 pm Talk 2: The Road to SRE (Instana) 8:45 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Abstracts # Title: Intelligent Cloud Operations with AIOps # Abstract: The field of AIOps, also known as Artificial Intelligence for IT Operations, uses advanced technologies to dramatically improve the monitoring, operation, and troubleshooting of distributed systems.","title":"SRE Munich at Google 2020","type":"events"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup 7:10 pm Talk 1: Recap SREcon 2019 EMEA (Ingo Averdunk, Pavlos Ratis) 7:40 pm Short break 7:45 pm Talk 2: Scaling to support thousands of BGP peerings in a SaaS environment (Costas Drogos) 8:15 pm SRE Quiz (!) + Networking + Drinks 9:00 pm Leave happy and inspired :) Speakers # Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Dan is an Engineering Manager at Google and future space traveler. Pavlos Ratis is a Site Reliability Engineer at HolidayCheck and maintainer of the Awesome SRE repository (https://github.com/dastergon/awesome-sre). Costas is working as a Site Reliability Engineer for Kentik\u0026rsquo;s Operations team, maintaining a sizeable hybrid infrastructure that hosts Kentik\u0026rsquo;s realtime, SaaS network analytics platform. His interests lie where the network, systems and software meet and lately he\u0026rsquo;s finding DevOps and SRE paradigms to allow for a perfect combination of the above. Lately he\u0026rsquo;s trying to get more familiar with the Cloud side of things to in order to increase the uniformity in Kentik\u0026rsquo;s hybrid infrastructure, but for now he\u0026rsquo;s mostly trying to read behind the buzzwords. Abstracts # Recap SREcon 2019 EMEA: Once a year, SREcon gathers the community of SREs to share experience and learn from each other. This will be a recap of SREcon EMEA 2019 (October 02-04, Dublin, Ireland) . Key themes of the conference were Comprehension, Understandability, and Predictability. Ingo and Pavlos will share their observations from the conference, and highlight several sessions worth listening to as a replay. Kentik utilizes multiple auxiliary sources to enrich ingested flow, with the most prominent of them being data sourced from BGP peerings. In this presentation we\u0026rsquo;ll go through all the different generations of the setup, the challenges and the requirements we had to work with at each step of process, in order to be able to scale to more than 4000 IPv4 + IPv6 BGP sessions today. Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nSlides # Recap SREcon19 Europe Legal # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule\nSpread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"28 November 2019","externalUrl":null,"permalink":"/events/sre-munich-autumn-event-2019/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup 7:10 pm Talk 1: Recap SREcon 2019 EMEA (Ingo Averdunk, Pavlos Ratis) 7:40 pm Short break 7:45 pm Talk 2: Scaling to support thousands of BGP peerings in a SaaS environment (Costas Drogos) 8:15 pm SRE Quiz (!","title":"SRE Munich at Google 2019","type":"events"},{"content":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda: # 6:30 pm Get Together with food and drinks 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Canary Releases with Traefik on GKE, Periklis Tsirakidis 7:45 pm Talk 2: Anatomy of a SRE and DevOps transformation, Aymeric Gerardin 8:15 pm Talk 3: Recap SREcon 2019 Americas, Ingo Averdunk 8:30 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Speakers # Periklis Tsirakidis worked for the last 9 years on various infrastructure as a code projects for distributed systems. Currently member of the Platform Engineering Group at Holidaycheck with focus on the self-service platform based on Kubernetes and GCP. Aymeric Gerardin, Departement manager Data management Site Reliability engineering @Amadeus. IT leader in Data Solutions, actively integrating and running new technology platforms and transforming organizations into SRE and DevOps Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Dan is an Engineering Manager at Google and future space traveler. Abstracts # Canary Releases with Traefik on GKE: Periklis shares with us how Traefik helped HolidayCheck shape their cloud ecosystem. In particular, he will give a brief in-depth introduction on how they implemented their canary release process for our microservice architecture with Traefik on Google Kubernetes Engine (GKE). Anatomy of a SRE and DevOps transformation: Keeping your IT service organization in the state of the art is key for the company success. 3 years ago we started our SRE and DevOps journey. With 3000+ infrastrucutre nodes, a legacy task based organization and a clear split between Operations and Development it promised to be a chalenging journey\u0026hellip; And it was! Come and deep dive with us in this mindset, skill set, organizational and processes revolution. From our initial plan to the current setup we will share with you the good, the bad and the ugly Recap SREcon 2019 Americas: Once a year, SREcon gathers the community of SREs to share experience and learn from each other. This will be a recap of SREcon Americas 2019 (March 25-27, Brooklyn) . Key themes of the conference were Comprehension, Understandability, and Predictability. Ingo will share his observations from the conference, and highlight several session worth listening to as a replay. Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLegal # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule\nSpread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"27 June 2019","externalUrl":null,"permalink":"/events/sre-munich-summer-event-2019/","section":"Events","summary":"We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group.\nAgenda: # 6:30 pm Get Together with food and drinks 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Canary Releases with Traefik on GKE, Periklis Tsirakidis 7:45 pm Talk 2: Anatomy of a SRE and DevOps transformation, Aymeric Gerardin 8:15 pm Talk 3: Recap SREcon 2019 Americas, Ingo Averdunk 8:30 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Speakers # Periklis Tsirakidis worked for the last 9 years on various infrastructure as a code projects for distributed systems.","title":"SRE Munich at EGYM 2019","type":"events"},{"content":"Hey folks! We’re excited to announce the Nikolaus Winter Event of the Site Reliability Engineering Munich Meetup group.\nAgenda # 7:00 pm Get Together with food and drinks, sponsored by Holidaycheck 7:30 pm Welcome, Sponsor Message (Dan, Ingo, Pavlos) 7:40 pm Implementing Distributed Consensus (Dan) 8:30 pm Game \u0026amp; Prizes! \u0026ldquo;How fast are computers?\u0026rdquo; (Ingo) 9:05 pm Post Mortem of the Month / Tales from On-call (Everyone) 9:10 pm Networking + Drinks 9:30 pm Leave happy and inspired :) Speakers # Pavlos Ratis is a Site Reliability Engineer at HolidayCheck in Munich and maintains the Awesome SRE repository (https://github.com/dastergon/awesome-sre). Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Dan is Team Lead SRE \u0026amp; Infrastructure at eGym and dreams of space travel. Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLocation # HolidayCheck Munich Office (https://goo.gl/maps/AYv9K3osBr62)\nPublic Transportation # Ten minute walk from S-Bahn Leuchtenbergring https://goo.gl/maps/aa5h5Mbo5zD2 Five minute walk from Bus Stop Neumarkter Straße https://goo.gl/maps/moa7h3xZkxG2 Parking: Very limited, unfortunately: https://bit.ly/2DbMHZf Legal # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule\nSpread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"6 December 2018","externalUrl":null,"permalink":"/events/sre-munich-nikolaus-winter-event-2018/","section":"Events","summary":"Hey folks! We’re excited to announce the Nikolaus Winter Event of the Site Reliability Engineering Munich Meetup group.\nAgenda # 7:00 pm Get Together with food and drinks, sponsored by Holidaycheck 7:30 pm Welcome, Sponsor Message (Dan, Ingo, Pavlos) 7:40 pm Implementing Distributed Consensus (Dan) 8:30 pm Game \u0026amp; Prizes!","title":"SRE Munich at HolidayCheck 2018","type":"events"},{"content":"We’re excited to announce the second Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get Together with food and drinks, sponsored by eGym GmbH 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Maintaining Reliability with Canary Testing, Pavlos Ratis (HolidayCheck) 7:45 pm Talk 2: Distributed Tracing in Production, Michael Würtinger (eGym) 8:15 pm Post Mortem of the Month / Tales from On-call (TBD) 8:20 pm Networking + Drinks 9:00 pm Leave happy and inspired :)\nSpeakers # Pavlos Ratis is a Site Reliability Engineer at HolidayCheck in Munich and maintainer of the Awesome SRE repository (https://github.com/dastergon/awesome-sre). Michael Würtinger is technology fellow and Site Reliability Engineer at eGym. He is driving forward the adoption of Distributed Tracing and other observability methods within eGym. Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Dan is the Technical Lead of SRE at eGym, first-time Meetup organizer, and future space traveler. Participation # We\u0026rsquo;re always looking for 20-45 minute (technical) talks related to the very broad field of Site Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLocation # eGym GmbH, Prannerstr. 2-4, 80333 München\nPublic Transportation # 5 minutes walk from Odeonsplatz (https://goo.gl/maps/HZCVGAA99py) 4 minutes walk from Theatinerstraße (https://goo.gl/maps/ytR5k9hNW8B2) 7 minutes walk from Marienplatz (https://goo.gl/maps/EFR7WLJ3qMG2) Parking: https://www.parkopedia.de/parking/locations/prannerstraße_munich_germany_u281z7g6bhg Slides # Canary Testing Distributed Tracing Recordings # Canary Testing by Pavlos Ratis: https://www.youtube.com/watch?v=Z9Hs6XCuNV8 Distributed Tracing by Michael Würtinger: https://www.youtube.com/watch?v=_iwpPHzvVC8 Legal # There may be audio and video recordings of the talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded. The “Tales from On-call” sessions are never recorded and the Chatham House Rule apply: https://en.wikipedia.org/wiki/Chatham_House_Rule\nSpread the word! Feel free to refer to this Meetup on social media using the #sremuc hashtag!\n","date":"25 September 2018","externalUrl":null,"permalink":"/events/sre-munich-summer-event-2018/","section":"Events","summary":"We’re excited to announce the second Meetup of the Site Reliability Engineering Munich group.\nAgenda # 6:30 pm Get Together with food and drinks, sponsored by eGym GmbH 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Maintaining Reliability with Canary Testing, Pavlos Ratis (HolidayCheck) 7:45 pm Talk 2: Distributed Tracing in Production, Michael Würtinger (eGym) 8:15 pm Post Mortem of the Month / Tales from On-call (TBD) 8:20 pm Networking + Drinks 9:00 pm Leave happy and inspired :)","title":"SRE Munich at EGYM 2018","type":"events"},{"content":"We’re excited to announce the first Meetup of the Site Reliability Engineering Munich group. We are overwhelmed by the number of people who joined the group, even before we had the time to advertise it. You guys rock! Our first event shall be known as the launch event and may contain bugs :) Feedback welcome!\nAgenda # 6:30 pm Get Together with food and drinks, sponsored by eGym GmbH 7:00 pm Welcome and Kick-off (Ingo, danrl) 7:30 pm Recap - SREcon 2018 (Ingo, danrl) 8:00 pm Continuous performance profiling in production environments (Dmitri Melikyan) 8:30 pm Post Mortem of the Month / Tales from On-call (Ingo) 8:35 pm Networking + Drinks 9:00 pm Go home inspired! [End of Event ;)] Speakers # Dmitri is a software engineer and the founder of StackImpact, where he is working on performance profiling and monitoring tools. Ingo Averdunk is a Distinguished Engineer in IBM and is responsible for Cloud Service Management and Site Reliability Engineering in the Cloud Adoption, Method and Solution Engineering office for IBM Cloud. Dan is a Technical Lead SRE at eGym, first-time Meetup organizer, and future space traveler. Participation # We\u0026rsquo;re always looking for 20-30 minute technical talks (and 5-8 minute lightning talks) relating to the very broad field of Reliability Engineering. Get in touch with the organizers if you\u0026rsquo;d like to present!\nLocation # eGym GmbH, Prannerstr. 2-4, 80333 München\nPublic Transportation # 5 minutes walk from Odeonsplatz (https://goo.gl/maps/HZCVGAA99py) 4 minutes walk from Theatinerstraße (https://goo.gl/maps/ytR5k9hNW8B2) 7 minutes walk from Marienplatz (https://goo.gl/maps/EFR7WLJ3qMG2) Parking: https://www.parkopedia.de/parking/locations/prannerstra%C3%9Fe_munich_germany_u281z7g6bhg/?country=de\u0026arriving=201805031830\u0026leaving=201805032100 Slides # Launch event slides Recordings # Launch Event: https://www.youtube.com/watch?v=2lHpP6vgFDk Continuous Performance Profiling: https://www.youtube.com/watch?v=6UI02MTyncc Legal # There may be audio and video recordings of talks and we may take photographs during the event with the purpose of sharing the learnings and advertising future events. By attending the event you give your consent to be recorded.\nSpread the word! Feel free to refer to this Meetup via #sremuc on social media!\n","date":"3 May 2018","externalUrl":null,"permalink":"/events/sre-munich-launch-event-2018/","section":"Events","summary":"We’re excited to announce the first Meetup of the Site Reliability Engineering Munich group. We are overwhelmed by the number of people who joined the group, even before we had the time to advertise it.","title":"SRE Munich at EGYM 2018","type":"events"},{"content":" Organizers # Looking for a way to contact us? Write us an email: muc@sre.xyz\nActive Organizers # Ingo Averdunk # Twitter: https://twitter.com/ingoa LinkedIn: https://de.linkedin.com/in/ingoaverdunk Blog: https://ingoaverdunk.wordpress.com/about/ Kordian Bruck # Twitter: https://twitter.com/kordianbruck LinkedIn: https://de.linkedin.com/in/kordianbruck Christian Rebischke # Twitter: https://twitter.com/sh1bumi LinkedIn: https://linkedin.com/in/shibumi Blog: https://shibumi.dev E-Mail: chris@shibumi.dev Alumni # Pavlos Ratis # Twitter: https://twitter.com/dastergon LinkedIn: https://linkedin.com/in/pavlosratis Blog: https://dastergon.gr/ Dan Luedtke # Blog: https://danrl.com/\n","externalUrl":null,"permalink":"/organizers/","section":"SRE MUC","summary":"Organizers # Looking for a way to contact us? Write us an email: muc@sre.xyz\nActive Organizers # Ingo Averdunk # Twitter: https://twitter.com/ingoa LinkedIn: https://de.linkedin.com/in/ingoaverdunk Blog: https://ingoaverdunk.wordpress.com/about/ Kordian Bruck # Twitter: https://twitter.","title":"","type":"page"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"}] \ No newline at end of file diff --git a/index.xml b/index.xml index 5cce385..2e0840d 100644 --- a/index.xml +++ b/index.xml @@ -1,4 +1,4 @@ -SRE MUChttps://muc.sre.xyz/Recent content on SRE MUCHugo -- gohugo.ioenGroup artwork by <a href='https://kickoke.com/'> Tina Lüdtke</a> based on <a href='http://kcgreendotcom.com/index.html'>K. C. Green</a>'s famous comic <a href='http://knowyourmeme.com/memes/this-is-fine'>'This Is Fine'</a>.Tue, 19 Mar 2024 12:44:21 +0000SRE Munich at Jambit 2024https://muc.sre.xyz/events/sre-munich-spring-event-2024/Tue, 19 Mar 2024 12:44:21 +0000https://muc.sre.xyz/events/sre-munich-spring-event-2024/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 25th from 6:30 PM to 9:30 PM CEST at Jambit in Munich. Let&rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!SRE+Grafana Munich at nordcloud 2024https://muc.sre.xyz/events/sre-munich-winter-event-2024/Wed, 07 Feb 2024 07:30:00 +0200https://muc.sre.xyz/events/sre-munich-winter-event-2024/We&rsquo;re co-hosting with Grafana &amp; Friends meetup group https://www.meetup.com/grafana-and-friends-munich/ . Come and see new faces! +SRE MUChttps://muc.sre.xyz/Recent content on SRE MUCHugo -- gohugo.ioenGroup artwork by <a href='https://kickoke.com/'> Tina Lüdtke</a> based on <a href='http://kcgreendotcom.com/index.html'>K. C. Green</a>'s famous comic <a href='http://knowyourmeme.com/memes/this-is-fine'>'This Is Fine'</a>.Sun, 07 Jul 2024 07:30:00 +0200SRE Munich at Celonis 2024https://muc.sre.xyz/events/sre-munich-summer-event-2024/Sun, 07 Jul 2024 07:30:00 +0200https://muc.sre.xyz/events/sre-munich-summer-event-2024/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for July 10th. This time around we will be meeting at Celonis . Let&rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!SRE Munich at Jambit 2024https://muc.sre.xyz/events/sre-munich-spring-event-2024/Tue, 19 Mar 2024 12:44:21 +0000https://muc.sre.xyz/events/sre-munich-spring-event-2024/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for April 25th from 6:30 PM to 9:30 PM CEST at Jambit in Munich. Let&rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!SRE+Grafana Munich at nordcloud 2024https://muc.sre.xyz/events/sre-munich-winter-event-2024/Wed, 07 Feb 2024 07:30:00 +0200https://muc.sre.xyz/events/sre-munich-winter-event-2024/We&rsquo;re co-hosting with Grafana &amp; Friends meetup group https://www.meetup.com/grafana-and-friends-munich/. Come and see new faces! This time around we will be meeting at Nordcloud in their Highlight Towers location Let&rsquo;s all meet up again, talk about reliability, exchange ideas and see where we can continue to learn on our journey as site reliability engineers (and folks that aspire to be one!SRE Munich at Google 2023https://muc.sre.xyz/events/sre-munich-summer-fall-event-2023/Thu, 07 Sep 2023 18:01:53 +0000https://muc.sre.xyz/events/sre-munich-summer-fall-event-2023/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for September 26th. This time around we will be meeting at Google in their Isarvalley event space!SRE Munich at Netlight 2023https://muc.sre.xyz/events/sre-munich-spring-event-2023/Tue, 23 May 2023 16:41:03 +0200https://muc.sre.xyz/events/sre-munich-spring-event-2023/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for June 13th. This time around we will be meeting at Netlight as they have graciously agreed to host us!SRE Munich at MaibornWolff 2023https://muc.sre.xyz/events/sre-munich-winter-event-2023/Mon, 13 Feb 2023 07:30:00 +0200https://muc.sre.xyz/events/sre-munich-winter-event-2023/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for February 13th. This time around we will be meeting at MaibornWolff as they have graciously agreed to host us!SRE Munich at Sixt 2022https://muc.sre.xyz/events/sre-munich-fall-event-2022/Thu, 13 Oct 2022 18:30:00 +0200https://muc.sre.xyz/events/sre-munich-fall-event-2022/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group for October 13th. @@ -7,4 +7,5 @@ Agenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome, Feedback fro Agenda # 6:30 pm Get together with food and drinks 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup 7:10 pm Talk 1: Recap SREcon 2019 EMEA (Ingo Averdunk, Pavlos Ratis) 7:40 pm Short break 7:45 pm Talk 2: Scaling to support thousands of BGP peerings in a SaaS environment (Costas Drogos) 8:15 pm SRE Quiz (!SRE Munich at EGYM 2019https://muc.sre.xyz/events/sre-munich-summer-event-2019/Thu, 27 Jun 2019 18:30:00 +0200https://muc.sre.xyz/events/sre-munich-summer-event-2019/We’re excited to announce the next Meetup of the Site Reliability Engineering Munich group. Agenda: # 6:30 pm Get Together with food and drinks 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Canary Releases with Traefik on GKE, Periklis Tsirakidis 7:45 pm Talk 2: Anatomy of a SRE and DevOps transformation, Aymeric Gerardin 8:15 pm Talk 3: Recap SREcon 2019 Americas, Ingo Averdunk 8:30 pm Networking + Drinks 9:00 pm Leave happy and inspired :) Speakers # Periklis Tsirakidis worked for the last 9 years on various infrastructure as a code projects for distributed systems.SRE Munich at HolidayCheck 2018https://muc.sre.xyz/events/sre-munich-nikolaus-winter-event-2018/Thu, 06 Dec 2018 19:00:00 +0200https://muc.sre.xyz/events/sre-munich-nikolaus-winter-event-2018/Hey folks! We’re excited to announce the Nikolaus Winter Event of the Site Reliability Engineering Munich Meetup group. Agenda # 7:00 pm Get Together with food and drinks, sponsored by Holidaycheck 7:30 pm Welcome, Sponsor Message (Dan, Ingo, Pavlos) 7:40 pm Implementing Distributed Consensus (Dan) 8:30 pm Game &amp; Prizes!SRE Munich at EGYM 2018https://muc.sre.xyz/events/sre-munich-summer-event-2018/Tue, 25 Sep 2018 18:30:00 +0200https://muc.sre.xyz/events/sre-munich-summer-event-2018/We’re excited to announce the second Meetup of the Site Reliability Engineering Munich group. -Agenda # 6:30 pm Get Together with food and drinks, sponsored by eGym GmbH 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Maintaining Reliability with Canary Testing, Pavlos Ratis (HolidayCheck) 7:45 pm Talk 2: Distributed Tracing in Production, Michael Würtinger (eGym) 8:15 pm Post Mortem of the Month / Tales from On-call (TBD) 8:20 pm Networking + Drinks 9:00 pm Leave happy and inspired :)SRE Munich at EGYM 2018https://muc.sre.xyz/events/sre-munich-launch-event-2018/Thu, 03 May 2018 06:30:00 +0200https://muc.sre.xyz/events/sre-munich-launch-event-2018/We’re excited to announce the first Meetup of the Site Reliability Engineering Munich group. We are overwhelmed by the number of people who joined the group, even before we had the time to advertise it.<link>https://muc.sre.xyz/organizers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://muc.sre.xyz/organizers/</guid><description>Organizers # Looking for a way to contact us? Write us an email: muc@sre.xyz Active Organizers # Ingo Averdunk # Twitter: https://twitter.com/ingoa LinkedIn: https://de.linkedin.com/in/ingoaverdunk Blog: https://ingoaverdunk.wordpress.com/about/ Kordian Bruck # Twitter: https://twitter.</description></item></channel></rss> \ No newline at end of file +Agenda # 6:30 pm Get Together with food and drinks, sponsored by eGym GmbH 7:00 pm Welcome, Sponsor Message, Feedback from last Meetup (Ingo, Dan) 7:15 pm Talk 1: Maintaining Reliability with Canary Testing, Pavlos Ratis (HolidayCheck) 7:45 pm Talk 2: Distributed Tracing in Production, Michael Würtinger (eGym) 8:15 pm Post Mortem of the Month / Tales from On-call (TBD) 8:20 pm Networking + Drinks 9:00 pm Leave happy and inspired :)</description></item><item><title>SRE Munich at EGYM 2018https://muc.sre.xyz/events/sre-munich-launch-event-2018/Thu, 03 May 2018 06:30:00 +0200https://muc.sre.xyz/events/sre-munich-launch-event-2018/We’re excited to announce the first Meetup of the Site Reliability Engineering Munich group. We are overwhelmed by the number of people who joined the group, even before we had the time to advertise it.<link>https://muc.sre.xyz/organizers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://muc.sre.xyz/organizers/</guid><description>Organizers # Looking for a way to contact us? Write us an email: muc@sre.xyz +Active Organizers # Ingo Averdunk # Twitter: https://twitter.com/ingoa LinkedIn: https://de.linkedin.com/in/ingoaverdunk Blog: https://ingoaverdunk.wordpress.com/about/ Kordian Bruck # Twitter: https://twitter.</description></item></channel></rss> \ No newline at end of file diff --git a/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js b/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js new file mode 100644 index 0000000..dfe7d81 --- /dev/null +++ b/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js @@ -0,0 +1 @@ +const sitePreference=document.documentElement.getAttribute("data-default-appearance"),userPreference=localStorage.getItem("appearance");(sitePreference==="dark"&&userPreference===null||userPreference==="dark")&&document.documentElement.classList.add("dark"),document.documentElement.getAttribute("data-auto-appearance")==="true"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&userPreference!=="light"&&document.documentElement.classList.add("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{e.matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")})),window.addEventListener("DOMContentLoaded",e=>{const t=document.getElementById("appearance-switcher"),n=document.getElementById("appearance-switcher-mobile");updateMeta(),this.updateLogo?.(getTargetAppearance()),t&&(t.addEventListener("click",()=>{document.documentElement.classList.toggle("dark");var e=getTargetAppearance();localStorage.setItem("appearance",e),updateMeta(),this.updateLogo?.(e)}),t.addEventListener("contextmenu",e=>{e.preventDefault(),localStorage.removeItem("appearance")})),n&&(n.addEventListener("click",()=>{document.documentElement.classList.toggle("dark");var e=getTargetAppearance();localStorage.setItem("appearance",e),updateMeta(),this.updateLogo?.(e)}),n.addEventListener("contextmenu",e=>{e.preventDefault(),localStorage.removeItem("appearance")}))});var updateMeta=()=>{var e=document.querySelector("body"),t=getComputedStyle(e);document.querySelector('meta[name="theme-color"]').setAttribute("content",t.backgroundColor)},getTargetAppearance=()=>document.documentElement.classList.contains("dark")?"dark":"light";window.addEventListener("DOMContentLoaded",e=>{const t=document.getElementById("top-scroller"),n=document.getElementById("site-footer");t&&n&&t.getBoundingClientRect().top>n.getBoundingClientRect().top&&(t.hidden=!0)}) \ No newline at end of file diff --git a/js/appearance.min.f94f4c4636d9e3ec8f5ee53cdc8ffa3d01bf87cd92ac85e6797550b1e2b80dc9118d838f3eb24c55109352455e72ff082dfe560283154e5a8f87fd75107b59c4.js b/js/appearance.min.f94f4c4636d9e3ec8f5ee53cdc8ffa3d01bf87cd92ac85e6797550b1e2b80dc9118d838f3eb24c55109352455e72ff082dfe560283154e5a8f87fd75107b59c4.js deleted file mode 100644 index 3480874..0000000 --- a/js/appearance.min.f94f4c4636d9e3ec8f5ee53cdc8ffa3d01bf87cd92ac85e6797550b1e2b80dc9118d838f3eb24c55109352455e72ff082dfe560283154e5a8f87fd75107b59c4.js +++ /dev/null @@ -1 +0,0 @@ -const sitePreference=document.documentElement.getAttribute("data-default-appearance"),userPreference=localStorage.getItem("appearance");(sitePreference==="dark"&&userPreference===null||userPreference==="dark")&&document.documentElement.classList.add("dark"),document.documentElement.getAttribute("data-auto-appearance")==="true"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&userPreference!=="light"&&document.documentElement.classList.add("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{e.matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")})),window.addEventListener("DOMContentLoaded",e=>{const t=document.getElementById("appearance-switcher"),n=document.getElementById("appearance-switcher-mobile");t&&(t.addEventListener("click",()=>{document.documentElement.classList.toggle("dark"),localStorage.setItem("appearance",document.documentElement.classList.contains("dark")?"dark":"light")}),t.addEventListener("contextmenu",e=>{e.preventDefault(),localStorage.removeItem("appearance")})),n&&(n.addEventListener("click",()=>{document.documentElement.classList.toggle("dark"),localStorage.setItem("appearance",document.documentElement.classList.contains("dark")?"dark":"light")}),n.addEventListener("contextmenu",e=>{e.preventDefault(),localStorage.removeItem("appearance")}))}) \ No newline at end of file diff --git a/js/main.bundle.min.3ddcf04f5b0d4c32f72e726d3c12eebccd8c3c9f9daa9a13414808895de0ae1e1cdddda6849680d5bd96dbb60d0b1e0b24c29f5c83e5631e55e7e6bc02015490.js b/js/main.bundle.min.3ddcf04f5b0d4c32f72e726d3c12eebccd8c3c9f9daa9a13414808895de0ae1e1cdddda6849680d5bd96dbb60d0b1e0b24c29f5c83e5631e55e7e6bc02015490.js deleted file mode 100644 index 92b2042..0000000 --- a/js/main.bundle.min.3ddcf04f5b0d4c32f72e726d3c12eebccd8c3c9f9daa9a13414808895de0ae1e1cdddda6849680d5bd96dbb60d0b1e0b24c29f5c83e5631e55e7e6bc02015490.js +++ /dev/null @@ -1,12 +0,0 @@ -e=this,t=function(){"use strict";function P(e,t){var n,s=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),s.push.apply(s,n)),s}function u(e){for(var t,n=1;n<arguments.length;n++)t=null!=arguments[n]?arguments[n]:{},n%2?P(Object(t),!0).forEach(function(n){x(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):P(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))});return e}function w(e){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w(e)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function F(e,t){for(var n,s=0;s<t.length;s++)n=t[s],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}function n(e,t,n){return t&&F(e.prototype,t),n&&F(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function x(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");Object.defineProperty(e,"prototype",{value:Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),writable:!1}),t&&k(e,t)}function p(e){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},p(e)}function k(e,t){return k=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},k(e,t)}function ce(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function c(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var n,o,s=p(e);return t?(o=p(this).constructor,n=Reflect.construct(s,arguments,o)):n=s.apply(this,arguments),ce(this,n)}}function d(e){return function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}(e)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function v(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,s=new Array(t);n<t;n++)s[n]=e[n];return s}function i(e){return Array.isArray?Array.isArray(e):"[object Array]"===I(e)}function o(e){return"string"==typeof e}function L(e){return"number"==typeof e}function se(e){return!0===e||!1===e||function(e){return A(e)&&null!==e}(e)&&"[object Boolean]"==I(e)}function A(e){return"object"===w(e)}function s(e){return e!=null}function y(e){return!e.trim().length}function I(e){return e==null?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var X=function(e){return"Invalid value for key ".concat(e)},$=function(e){return"Pattern length exceeds max of ".concat(e,".")},R=Object.prototype.hasOwnProperty,ae=function(){function e(n){var s,o=this;t(this,e),this._keys=[],this._keyMap={},s=0,n.forEach(function(e){var t=z(e);s+=t.weight,o._keys.push(t),o._keyMap[t.id]=t,s+=t.weight}),this._keys.forEach(function(e){e.weight/=s})}return n(e,[{key:"get",value:function(e){return this._keyMap[e]}},{key:"keys",value:function(){return this._keys}},{key:"toJSON",value:function(){return JSON.stringify(this._keys)}}]),e}();function z(e){var t,n=null,s=null,a=null,r=1,c=null;if(o(e)||i(e))a=e,n=M(e),s=C(e);else{if(!R.call(e,"name"))throw new Error(function(e){return"Missing ".concat(e," property in key")}("name"));if(t=e.name,a=t,R.call(e,"weight")&&(r=e.weight)<=0)throw new Error(function(e){return"Property 'weight' in key '".concat(e,"' must be a positive integer")}(t));n=M(t),s=C(t),c=e.getFn}return{path:n,id:s,weight:r,src:a,getFn:c}}function M(e){return i(e)?e:e.split(".")}function C(e){return i(e)?e.join("."):e}var Q={useExtendedSearch:!1,getFn:function(e,t){var n=[],a=!1;return function e(t,r,c){if(s(t))if(r[c]){if(l=t[r[c]],!s(l))return;if(c===r.length-1&&(o(l)||L(l)||se(l)))n.push(function(e){return e==null?"":function(e){if("string"==typeof e)return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(e)}(l));else if(i(l)){a=!0;for(var l,d=0,u=l.length;d<u;d+=1)e(l[d],r,c+1)}else r.length&&e(l,r,c+1)}else n.push(t)}(e,o(t)?t.split("."):t,0),a?n:n[0]},ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1},e=u(u(u(u({},{isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:function(e,t){return e.score===t.score?e.idx<t.idx?-1:1:e.score<t.score?-1:1}}),{includeMatches:!1,findAllMatches:!1,minMatchCharLength:1}),{location:0,threshold:.6,distance:100}),Q),ge=/[^ ]+/g;function ue(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,e=new Map,t=Math.pow(10,s);return{get:function(s){if(o=s.match(ge).length,e.has(o))return e.get(o);var o,a=1/Math.pow(o,.5*n),i=parseFloat(Math.round(a*t)/t);return e.set(o,i),i},clear:function(){e.clear()}}}f=function(){function a(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=n.getFn,i=void 0===s?e.getFn:s,o=n.fieldNormWeight,r=void 0===o?e.fieldNormWeight:o;t(this,a),this.norm=ue(r,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return n(a,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=e,this._keysMap={},e.forEach(function(e,n){t._keysMap[e.id]=n})}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,o(this.docs[0])?this.docs.forEach(function(t,n){e._addString(t,n)}):this.docs.forEach(function(t,n){e._addObject(t,n)}),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();o(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t<n;t+=1)this.records[t].i-=1}},{key:"getValueForItemAtKeyId",value:function(e,t){return e[this._keysMap[t]]}},{key:"size",value:function(){return this.records.length}},{key:"_addString",value:function(e,t){if(s(e)&&!y(e)){var n={v:e,i:t,n:this.norm.get(e)};this.records.push(n)}}},{key:"_addObject",value:function(e,t){var n=this,a={i:t,$:{}};this.keys.forEach(function(t,r){var l,c=t.getFn?t.getFn(e):n.getFn(e,t.path);s(c)&&(i(c)?!function(){for(l=[],t=[{nestedArrIndex:-1,value:c}];t.length;){var t,l,u,d=t.pop(),h=d.nestedArrIndex,e=d.value;s(e)&&(o(e)&&!y(e)?(u={v:e,i:h,n:n.norm.get(e)},l.push(u)):i(e)&&e.forEach(function(e,n){t.push({nestedArrIndex:n,value:e})}))}a.$[r]=l}():o(c)&&!y(c)&&(l={v:c,n:n.norm.get(c)},a.$[r]=l))}),this.records.push(a)}},{key:"toJSON",value:function(){return{keys:this.keys,records:this.records}}}]),a}();function D(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=o.getFn,r=void 0===i?e.getFn:i,a=o.fieldNormWeight,c=void 0===a?e.fieldNormWeight:a,s=new f({getFn:r,fieldNormWeight:c});return s.setKeys(t.map(z)),s.setSources(n),s.create(),s}function g(t){var s,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d=n.errors,f=void 0===d?0:d,l=n.currentLocation,u=void 0===l?0:l,a=n.expectedLocation,h=void 0===a?0:a,r=n.distance,c=void 0===r?e.distance:r,i=n.ignoreLocation,m=void 0===i?e.ignoreLocation:i,o=f/t.length;return m?o:(s=Math.abs(h-u),c?o+s/c:s?1:o)}function oe(){for(var i,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.minMatchCharLength,o=[],t=-1,r=-1,n=0,c=s.length;n<c;n+=1)i=s[n],i&&-1===t?t=n:i||-1===t||((r=n-1)-t+1>=a&&o.push([t,r]),t=-1);return s[n-1]&&n-t>=a&&o.push([t,n-1]),o}l=32;function W(e){for(var s,n={},t=0,o=e.length;t<o;t+=1)s=e.charAt(t),n[s]=(n[s]||0)|1<<o-t-1;return n}O=function(){function s(n){var i,a,c,y=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},h=o.location,C=void 0===h?e.location:h,g=o.threshold,O=void 0===g?e.threshold:g,d=o.distance,A=void 0===d?e.distance:d,m=o.includeMatches,E=void 0===m?e.includeMatches:m,p=o.findAllMatches,x=void 0===p?e.findAllMatches:p,v=o.minMatchCharLength,_=void 0===v?e.minMatchCharLength:v,u=o.isCaseSensitive,j=void 0===u?e.isCaseSensitive:u,b=o.ignoreLocation,w=void 0===b?e.ignoreLocation:b;if(t(this,s),this.options={location:C,threshold:O,distance:A,includeMatches:E,findAllMatches:x,minMatchCharLength:_,isCaseSensitive:j,ignoreLocation:w},this.pattern=j?n:n.toLowerCase(),this.chunks=[],this.pattern.length)if(a=function(e,t){y.chunks.push({pattern:e,alphabet:W(e),startIndex:t})},i=this.pattern.length,i>l){for(var r=0,f=i%l,k=i-f;r<k;)a(this.pattern.substr(r,l),r),r+=l;f&&(c=i-l,a(this.pattern.substr(c),c))}else a(this.pattern,0)}return n(s,[{key:"searchIn",value:function(t){var c=this.options,j=c.isCaseSensitive,a=c.includeMatches;if(j||(t=t.toLowerCase()),this.pattern===t)return r={isMatch:!0,score:0},a&&(r.indices=[[0,t.length-1]]),r;var i,r,n=this.options,b=n.location,h=n.distance,v=n.threshold,p=n.findAllMatches,m=n.minMatchCharLength,f=n.ignoreLocation,o=[],u=0,s=!1;return this.chunks.forEach(function(n){var j=n.pattern,y=n.alphabet,_=n.startIndex,i=function(t,n,s){var o,a,f,v,b,_,E,M,P,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},B=r.location,V=void 0===B?e.location:B,R=r.distance,C=void 0===R?e.distance:R,N=r.threshold,K=void 0===N?e.threshold:N,F=r.findAllMatches,W=void 0===F?e.findAllMatches:F,D=r.minMatchCharLength,z=void 0===D?e.minMatchCharLength:D,I=r.includeMatches,H=void 0===I?e.includeMatches:I,L=r.ignoreLocation,j=void 0===L?e.ignoreLocation:L;if(n.length>l)throw new Error($(l));for(var y,d=n.length,p=t.length,i=Math.max(0,Math.min(V,p)),m=K,h=i,x=z>1||H,S=x?Array(p):[];(y=t.indexOf(n,h))>-1;)if(P=g(n,{currentLocation:y,expectedLocation:i,distance:C,ignoreLocation:j}),m=Math.min(P,m),h=y+d,x)for(b=0;b<d;)S[y+b]=1,b+=1;h=-1;for(var w=[],A=1,O=d+p,U=1<<d-1,c=0;c<d;c+=1){for(f=0,a=O;f<a;)g(n,{errors:c,currentLocation:i+a,expectedLocation:i,distance:C,ignoreLocation:j})<=m?f=a:O=a,a=Math.floor((O-f)/2+f);var O=a,T=Math.max(1,i-a+1),k=W?p:Math.min(i+a,p)+d,u=Array(k+2);u[k+1]=(1<<c)-1;for(o=k;o>=T;o-=1)if(v=o-1,E=s[t.charAt(v)],x&&(S[v]=+!!E),u[o]=(u[o+1]<<1|1)&E,c&&(u[o]|=(w[o+1]|w[o])<<1|1|w[o+1]),u[o]&U&&(A=g(n,{errors:c,currentLocation:v,expectedLocation:i,distance:C,ignoreLocation:j}))<=m){if(m=A,(h=v)<=i)break;T=Math.max(1,2*i-h)}if(g(n,{errors:c+1,currentLocation:i,expectedLocation:i,distance:C,ignoreLocation:j})>m)break;w=u}return _={isMatch:h>=0,score:Math.max(.001,A)},x&&(M=oe(S,z),M.length?H&&(_.indices=M):_.isMatch=!1),_}(t,j,y,{location:b+_,distance:h,threshold:v,findAllMatches:p,minMatchCharLength:m,includeMatches:a,ignoreLocation:f}),r=i.isMatch,w=i.score,c=i.indices;r&&(s=!0),u+=w,r&&c&&(o=[].concat(d(o),d(c)))}),i={isMatch:s,score:s?u/this.chunks.length:1},s&&a&&(i.indices=o),i}}]),s}(),a=function(){function e(n){t(this,e),this.pattern=n}return n(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return B(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return B(e,this.singleRegex)}}]),e}();function B(e,t){var n=e.match(t);return n?n[1]:null}var a,l,h,f,O,G=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),s}(a),Y=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),s}(a),ne=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),s}(a),U=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),s}(a),K=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),s}(a),q=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),s}(a),S=function(s){r(o,s);var i=c(o);function o(n){var f,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},h=s.location,g=void 0===h?e.location:h,l=s.threshold,p=void 0===l?e.threshold:l,u=s.distance,j=void 0===u?e.distance:u,a=s.includeMatches,_=void 0===a?e.includeMatches:a,d=s.findAllMatches,v=void 0===d?e.findAllMatches:d,m=s.minMatchCharLength,b=void 0===m?e.minMatchCharLength:m,r=s.isCaseSensitive,y=void 0===r?e.isCaseSensitive:r,c=s.ignoreLocation,w=void 0===c?e.ignoreLocation:c;return t(this,o),(f=i.call(this,n))._bitapSearch=new O(n,{location:g,threshold:p,distance:j,includeMatches:_,findAllMatches:v,minMatchCharLength:b,isCaseSensitive:y,ignoreLocation:w}),f}return n(o,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),o}(a),V=function(e){r(s,e);var o=c(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){for(var t,o,n=0,s=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,s.push([t,n-1]);return o=!!s.length,{isMatch:o,score:o?0:1,indices:s}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),s}(a),_=[G,V,ne,U,q,K,Y,S],H=_.length,Z=/ +(?=(?:[^"]*"[^"]*")*[^"]*$)/;function J(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map(function(e){for(var a,r,c,l,d=e.trim().split(Z).filter(function(e){return e&&!!e.trim()}),s=[],o=0,h=d.length;o<h;o+=1){for(var u=d[o],i=!1,n=-1;!i&&++n<H;)a=_[n],r=a.isMultiMatch(u),r&&(s.push(new a(r,t)),i=!0);if(!i)for(n=-1;++n<H;)if(c=_[n],l=c.isSingleMatch(u),l){s.push(new c(l,t));break}}return s})}var ee=new Set([S.type,V.type]),te=function(){function s(n){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=o.isCaseSensitive,r=void 0===a?e.isCaseSensitive:a,c=o.includeMatches,j=void 0===c?e.includeMatches:c,d=o.minMatchCharLength,v=void 0===d?e.minMatchCharLength:d,h=o.ignoreLocation,f=void 0===h?e.ignoreLocation:h,m=o.findAllMatches,p=void 0===m?e.findAllMatches:m,i=o.location,g=void 0===i?e.location:i,u=o.threshold,b=void 0===u?e.threshold:u,l=o.distance,y=void 0===l?e.distance:l;t(this,s),this.query=null,this.options={isCaseSensitive:r,includeMatches:j,minMatchCharLength:v,findAllMatches:p,ignoreLocation:f,location:g,threshold:b,distance:y},this.pattern=r?n:n.toLowerCase(),this.query=J(this.pattern,this.options)}return n(s,[{key:"searchIn",value:function(e){if(o=this.query,!o)return{isMatch:!1,score:1};u=this.options,l=u.includeMatches,e=u.isCaseSensitive?e:e.toLowerCase();for(var s,o,i,c,l,u,f,g,n=0,t=[],a=0,r=0,j=o.length;r<j;r+=1){i=o[r],t.length=0,n=0;for(s=0,f=i.length;s<f;s+=1){var m=i[s],h=m.search(e),v=h.isMatch,p=h.indices,b=h.score;if(!v){a=0,n=0,t.length=0;break}n+=1,a+=b,l&&(g=m.constructor.type,ee.has(g)?t=[].concat(d(t),d(p)):t.push(p))}if(n)return c={isMatch:!0,score:a/n},l&&(c.indices=t),c}return{isMatch:!1,score:1}}}],[{key:"condition",value:function(e,t){return t.useExtendedSearch}}]),s}(),m=[];function b(e,t){for(var s,n=0,o=m.length;n<o;n+=1)if(s=m[n],s.condition(e,t))return new s(e,t);return new O(e,t)}var j="$and",ie="$or",N="$path",re="$val",E=function(e){return!!e[j]||!!e[ie]},le=function(e){return!!e[N]},de=function(e){return!i(e)&&A(e)&&!E(e)},T=function(e){return x({},j,Object.keys(e).map(function(t){return x({},t,e[t])}))};function he(t,n){var s=n.ignoreFieldNorm,o=void 0===s?e.ignoreFieldNorm:s;t.forEach(function(e){var t=1;e.matches.forEach(function(e){var n=e.key,a=e.norm,s=e.score,i=n?n.weight:null;t*=Math.pow(0===s&&i?Number.EPSILON:s,(i||1)*(o?1:a))}),e.score=t})}function me(e,t){var n=e.matches;t.matches=[],s(n)&&n.forEach(function(e){if(s(e.indices)&&e.indices.length){var n={indices:e.indices,value:e.value};e.key&&(n.key=e.key.src),e.idx>-1&&(n.refIndex=e.idx),t.matches.push(n)}})}function fe(e,t){t.score=e.score}function pe(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=o.includeMatches,r=void 0===i?e.includeMatches:i,a=o.includeScore,c=void 0===a?e.includeScore:a,s=[];return r&&s.push(me),c&&s.push(fe),t.map(function(e){var t=e.idx,o={item:n[t],refIndex:t};return s.length&&s.forEach(function(t){t(e,o)}),o})}return h=function(){function a(n){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;t(this,a),this.options=u(u({},e),s),this.options.useExtendedSearch,this._keyStore=new ae(this.options.keys),this.setCollection(n,o)}return n(a,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof f))throw new Error("Incorrect 'index' type");this._myIndex=t||D(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){s(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var t,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},n=[],e=0,s=this._docs.length;e<s;e+=1)t=this._docs[e],o(t,e)&&(this.removeAt(e),e-=1,s-=1,n.push(t));return n}},{key:"removeAt",value:function(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}},{key:"getIndex",value:function(){return this._myIndex}},{key:"search",value:function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=a.limit,s=void 0===i?-1:i,t=this.options,r=t.includeMatches,c=t.includeScore,l=t.shouldSort,d=t.sortFn,u=t.ignoreFieldNorm,n=o(e)?o(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return he(n,{ignoreFieldNorm:u}),l&&n.sort(d),L(s)&&s>-1&&(n=n.slice(0,s)),pe(n,this._docs,{includeMatches:r,includeScore:c})}},{key:"_searchStringList",value:function(e){var n=b(e,this.options),o=this._myIndex.records,t=[];return o.forEach(function(e){var o=e.v,a=e.i,r=e.n;if(s(o)){var i=n.searchIn(o),c=i.isMatch,l=i.score,d=i.indices;c&&t.push({item:o,idx:a,matches:[{score:l,value:o,norm:r,indices:d}]})}}),t}},{key:"_searchLogical",value:function(e){var n=this,r=function(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,s=void 0===n||n,a=function e(n){var r,c,d,u,a=Object.keys(n),l=le(n);if(!l&&a.length>1&&!E(n))return e(T(n));if(de(n)){if(r=l?n[N]:a[0],c=l?n[re]:n[r],!o(c))throw new Error(X(r));return d={keyId:C(r),pattern:c},s&&(d.searcher=b(c,t)),d}return u={children:[],operator:a[0]},a.forEach(function(t){var s=n[t];i(s)&&s.forEach(function(t){u.children.push(e(t))})}),u};return E(e)||(e=T(e)),a(e)}(e,this.options),c=function e(t,s,o){if(!t.children){var c,l=t.keyId,u=t.searcher,i=n._findMatches({key:n._keyStore.get(l),value:n._myIndex.getValueForItemAtKeyId(s,l),searcher:u});return i&&i.length?[{idx:o,item:s,matches:i}]:[]}for(var a=[],r=0,h=t.children.length;r<h;r+=1)if(c=e(t.children[r],s,o),c.length)a.push.apply(a,d(c));else if(t.operator===j)return[];return a},l=this._myIndex.records,t={},a=[];return l.forEach(function(e){var i,o=e.$,n=e.i;s(o)&&(i=c(r,o,n),i.length&&(t[n]||(t[n]={idx:n,item:o,matches:[]},a.push(t[n])),i.forEach(function(e){var s,o=e.matches;(s=t[n].matches).push.apply(s,d(o))})))}),a}},{key:"_searchObjectList",value:function(e){var o=this,i=b(e,this.options),t=this._myIndex,a=t.keys,r=t.records,n=[];return r.forEach(function(e){var t,r=e.$,c=e.i;s(r)&&(t=[],a.forEach(function(e,n){t.push.apply(t,d(o._findMatches({key:e,value:r[n],searcher:i})))}),t.length&&n.push({idx:c,item:r,matches:t}))}),n}},{key:"_findMatches",value:function(e){var a=e.key,t=e.value,r=e.searcher;if(!s(t))return[];if(n=[],i(t))t.forEach(function(e){var t=e.v,i=e.i,c=e.n;if(s(t)){var o=r.searchIn(t),l=o.isMatch,d=o.score,u=o.indices;l&&n.push({score:d,key:a,value:t,idx:i,norm:c,indices:u})}});else{var n,c=t.v,l=t.n,o=r.searchIn(c),d=o.isMatch,u=o.score,h=o.indices;d&&n.push({score:u,key:a,value:c,norm:l,indices:h})}return n}}]),a}(),h.version="6.6.2",h.createIndex=D,h.parseIndex=function(t){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=s.getFn,a=void 0===o?e.getFn:o,i=s.fieldNormWeight,r=void 0===i?e.fieldNormWeight:i,c=t.keys,l=t.records,n=new f({getFn:a,fieldNormWeight:r});return n.setKeys(c),n.setIndexRecords(l),n},h.config=e,function(){m.push.apply(m,arguments)}(te),h},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t();var e,t,fuse,showButton=document.getElementById("search-button"),scriptBundle,copyText,copiedText,showButtonMobile=document.getElementById("search-button-mobile"),hideButton=document.getElementById("close-search-button"),wrapper=document.getElementById("search-wrapper"),modal=document.getElementById("search-modal"),input=document.getElementById("search-query"),output=document.getElementById("search-results"),first=output.firstChild,last=output.lastChild,searchVisible=!1,indexed=!1,hasResults=!1;showButton?showButton.addEventListener("click",displaySearch):null,showButtonMobile?showButtonMobile.addEventListener("click",displaySearch):null,hideButton.addEventListener("click",hideSearch),wrapper.addEventListener("click",hideSearch),modal.addEventListener("click",function(e){return e.stopPropagation(),e.stopImmediatePropagation(),!1}),document.addEventListener("keydown",function(e){e.key=="/"&&(searchVisible||(e.preventDefault(),displaySearch())),e.key=="Escape"&&hideSearch(),e.key=="ArrowDown"&&searchVisible&&hasResults&&(e.preventDefault(),document.activeElement==input?first.focus():document.activeElement==last?last.focus():document.activeElement.parentElement.nextSibling.firstElementChild.focus()),e.key=="ArrowUp"&&searchVisible&&hasResults&&(e.preventDefault(),document.activeElement==input?input.focus():document.activeElement==first?input.focus():document.activeElement.parentElement.previousSibling.firstElementChild.focus())}),input.onkeyup=function(){executeQuery(this.value)};function displaySearch(){indexed||buildIndex(),searchVisible||(document.body.style.overflow="hidden",wrapper.style.visibility="visible",input.focus(),searchVisible=!0)}function hideSearch(){searchVisible&&(document.body.style.overflow="visible",wrapper.style.visibility="hidden",input.value="",output.innerHTML="",document.activeElement.blur(),searchVisible=!1)}function fetchJSON(e,t){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(n.readyState===4&&n.status===200){var e=JSON.parse(n.responseText);t&&t(e)}},n.open("GET",e),n.send()}function buildIndex(){var e=wrapper.getAttribute("data-url"),e=e.replace(/\/?$/,"/");fetchJSON(e+"index.json",function(e){var t={shouldSort:!0,ignoreLocation:!0,threshold:0,includeMatches:!0,keys:[{name:"title",weight:.8},{name:"section",weight:.2},{name:"summary",weight:.6},{name:"content",weight:.4}]};fuse=new Fuse(e,t),indexed=!0})}function executeQuery(e){let n=fuse.search(e),t="";n.length>0?(n.forEach(function(e){t=t+`<li class="mb-2"> - <a class="flex items-center px-3 py-2 rounded-md appearance-none bg-neutral-100 dark:bg-neutral-700 focus:bg-primary-100 hover:bg-primary-100 dark:hover:bg-primary-900 dark:focus:bg-primary-900 focus:outline-dotted focus:outline-transparent focus:outline-2" href="${e.item.permalink}" tabindex="0"> - <div class="grow"> - <div class="-mb-1 text-lg font-bold">${e.item.title}</div> - <div class="text-sm text-neutral-500 dark:text-neutral-400">${e.item.section}<span class="px-2 text-primary-500">·</span>${e.item.date}</span></div> - <div class="text-sm italic">${e.item.summary}</div> - </div> - <div class="ml-2 ltr:block rtl:hidden text-neutral-500">→</div> - <div class="mr-2 ltr:hidden rtl:block text-neutral-500">←</div> - </a> - </li>`}),hasResults=!0):(t="",hasResults=!1),output.innerHTML=t,n.length>0&&(first=output.firstChild.firstElementChild,last=output.lastChild.firstElementChild)}scriptBundle=document.getElementById("script-bundle"),copyText=scriptBundle&&scriptBundle.getAttribute("data-copy")?scriptBundle.getAttribute("data-copy"):"Copy",copiedText=scriptBundle&&scriptBundle.getAttribute("data-copied")?scriptBundle.getAttribute("data-copied"):"Copied";function createCopyButton(e){const t=document.createElement("button");t.className="copy-button",t.type="button",t.ariaLabel=copyText,t.innerText=copyText,t.addEventListener("click",()=>copyCodeToClipboard(t,e)),addCopyButtonToDom(t,e)}async function copyCodeToClipboard(e,t){const n=t.querySelector(":last-child > .chroma > code").innerText;try{result=await navigator.permissions.query({name:"clipboard-write"}),result.state=="granted"||result.state=="prompt"?await navigator.clipboard.writeText(n):copyCodeBlockExecCommand(n,t)}catch{copyCodeBlockExecCommand(n,t)}finally{codeWasCopied(e)}}function copyCodeBlockExecCommand(e,t){const n=document.createElement("textArea");n.contentEditable="true",n.readOnly="false",n.className="copy-textarea",n.value=e,t.insertBefore(n,t.firstChild);const s=document.createRange();s.selectNodeContents(n);const o=window.getSelection();o.removeAllRanges(),o.addRange(s),n.setSelectionRange(0,999999),document.execCommand("copy"),t.removeChild(n)}function codeWasCopied(e){e.blur(),e.innerText=copiedText,setTimeout(function(){e.innerText=copyText},2e3)}function addCopyButtonToDom(e,t){t.insertBefore(e,t.firstChild);const n=document.createElement("div");n.className="highlight-wrapper",t.parentNode.insertBefore(n,t),n.appendChild(t)}window.addEventListener("DOMContentLoaded",e=>{document.querySelectorAll(".highlight").forEach(e=>createCopyButton(e))}) \ No newline at end of file diff --git a/js/main.bundle.min.b8f12e2e21d0fce82f8d935f9cb80321fa3fca124fa36cc4df6e4b7474223741a777eb2b65f810cc333bd862f49543df61cf5607a0736faf053ffe9b9c39ff8a.js b/js/main.bundle.min.b8f12e2e21d0fce82f8d935f9cb80321fa3fca124fa36cc4df6e4b7474223741a777eb2b65f810cc333bd862f49543df61cf5607a0736faf053ffe9b9c39ff8a.js new file mode 100644 index 0000000..a34cfee --- /dev/null +++ b/js/main.bundle.min.b8f12e2e21d0fce82f8d935f9cb80321fa3fca124fa36cc4df6e4b7474223741a777eb2b65f810cc333bd862f49543df61cf5607a0736faf053ffe9b9c39ff8a.js @@ -0,0 +1,15 @@ +e=this,t=function(){"use strict";function R(e,t){var n,s=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),s.push.apply(s,n)),s}function h(e){for(var t,n=1;n<arguments.length;n++)t=null!=arguments[n]?arguments[n]:{},n%2?R(Object(t),!0).forEach(function(n){C(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):R(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))});return e}function k(e){return k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},k(e)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function F(e,t){for(var n,s=0;s<t.length;s++)n=t[s],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,N(n.key),n)}function n(e,t,n){return t&&F(e.prototype,t),n&&F(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function C(e,t,n){return(t=N(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&x(e,t)}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function x(e,t){return x=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},x(e,t)}function le(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function r(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var n,o,s=m(e);return t?(o=m(this).constructor,n=Reflect.construct(s,arguments,o)):n=s.apply(this,arguments),le(this,n)}}function d(e){return function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function y(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,s=new Array(t);n<t;n++)s[n]=e[n];return s}function N(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n,s=e[Symbol.toPrimitive];if(void 0!==s){if(n=s.call(e,t||"default"),"object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function i(e){return Array.isArray?Array.isArray(e):"[object Array]"===P(e)}A=1/0;function se(e){return e==null?"":function(e){if("string"==typeof e)return e;var t=e+"";return"0"==t&&1/e==-A?"-0":t}(e)}function o(e){return"string"==typeof e}function V(e){return"number"==typeof e}function Z(e){return!0===e||!1===e||function(e){return B(e)&&null!==e}(e)&&"[object Boolean]"==P(e)}function B(e){return"object"===k(e)}function s(e){return e!=null}function O(e){return!e.trim().length}function P(e){return e==null?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var oe=function(e){return"Missing ".concat(e," property in key")},ie=function(e){return"Property 'weight' in key '".concat(e,"' must be a positive integer")},z=Object.prototype.hasOwnProperty,fe=function(){function e(n){var s,o=this;t(this,e),this._keys=[],this._keyMap={},s=0,n.forEach(function(e){var t=H(e);o._keys.push(t),o._keyMap[t.id]=t,s+=t.weight}),this._keys.forEach(function(e){e.weight/=s})}return n(e,[{key:"get",value:function(e){return this._keyMap[e]}},{key:"keys",value:function(){return this._keys}},{key:"toJSON",value:function(){return JSON.stringify(this._keys)}}]),e}();function H(e){var t,n=null,s=null,a=null,r=1,c=null;if(o(e)||i(e))a=e,n=M(e),s=b(e);else{if(!z.call(e,"name"))throw new Error(oe("name"));if(t=e.name,a=t,z.call(e,"weight")&&(r=e.weight)<=0)throw new Error(ie(t));n=M(t),s=b(t),c=e.getFn}return{path:n,id:s,weight:r,src:a,getFn:c}}function M(e){return i(e)?e:e.split(".")}function b(e){return i(e)?e.join("."):e}var de={useExtendedSearch:!1,getFn:function(e,t){var n=[],a=!1;return function e(t,r,c){if(s(t))if(r[c]){if(l=t[r[c]],!s(l))return;if(c===r.length-1&&(o(l)||V(l)||Z(l)))n.push(se(l));else if(i(l)){a=!0;for(var l,d=0,u=l.length;d<u;d+=1)e(l[d],r,c+1)}else r.length&&e(l,r,c+1)}else n.push(t)}(e,o(t)?t.split("."):t,0),a?n:n[0]},ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1},e=h(h(h(h({},{isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:function(e,t){return e.score===t.score?e.idx<t.idx?-1:1:e.score<t.score?-1:1}}),{includeMatches:!1,findAllMatches:!1,minMatchCharLength:1}),{location:0,threshold:.6,distance:100}),de),re=/[^ ]+/g,E=function(){function a(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=n.getFn,i=void 0===s?e.getFn:s,o=n.fieldNormWeight,r=void 0===o?e.fieldNormWeight:o;t(this,a),this.norm=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,e=new Map,t=Math.pow(10,s);return{get:function(s){if(o=s.match(re).length,e.has(o))return e.get(o);var o,a=1/Math.pow(o,.5*n),i=parseFloat(Math.round(a*t)/t);return e.set(o,i),i},clear:function(){e.clear()}}}(r,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return n(a,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=e,this._keysMap={},e.forEach(function(e,n){t._keysMap[e.id]=n})}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,o(this.docs[0])?this.docs.forEach(function(t,n){e._addString(t,n)}):this.docs.forEach(function(t,n){e._addObject(t,n)}),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();o(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t<n;t+=1)this.records[t].i-=1}},{key:"getValueForItemAtKeyId",value:function(e,t){return e[this._keysMap[t]]}},{key:"size",value:function(){return this.records.length}},{key:"_addString",value:function(e,t){if(s(e)&&!O(e)){var n={v:e,i:t,n:this.norm.get(e)};this.records.push(n)}}},{key:"_addObject",value:function(e,t){var n=this,a={i:t,$:{}};this.keys.forEach(function(t,r){if(c=t.getFn?t.getFn(e):n.getFn(e,t.path),s(c))if(i(c)){for(u=[],d=[{nestedArrIndex:-1,value:c}];d.length;){var c,d,u,m,f,h=d.pop(),p=h.nestedArrIndex,l=h.value;s(l)&&(o(l)&&!O(l)?(m={v:l,i:p,n:n.norm.get(l)},u.push(m)):i(l)&&l.forEach(function(e,t){d.push({nestedArrIndex:t,value:e})}))}a.$[r]=u}else o(c)&&!O(c)&&(f={v:c,n:n.norm.get(c)},a.$[r]=f)}),this.records.push(a)}},{key:"toJSON",value:function(){return{keys:this.keys,records:this.records}}}]),a}();function L(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=o.getFn,r=void 0===i?e.getFn:i,a=o.fieldNormWeight,c=void 0===a?e.fieldNormWeight:a,s=new E({getFn:r,fieldNormWeight:c});return s.setKeys(t.map(H)),s.setSources(n),s.create(),s}function f(t){var s,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d=n.errors,f=void 0===d?0:d,l=n.currentLocation,u=void 0===l?0:l,a=n.expectedLocation,h=void 0===a?0:a,r=n.distance,c=void 0===r?e.distance:r,i=n.ignoreLocation,m=void 0===i?e.ignoreLocation:i,o=f/t.length;return m?o:(s=Math.abs(h-u),c?o+s/c:s?1:o)}l=32;function U(t,n,s){var o,a,p,v,b,_,E,M,P,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},B=r.location,V=void 0===B?e.location:B,R=r.distance,C=void 0===R?e.distance:R,N=r.threshold,U=void 0===N?e.threshold:N,F=r.findAllMatches,$=void 0===F?e.findAllMatches:F,D=r.minMatchCharLength,z=void 0===D?e.minMatchCharLength:D,I=r.includeMatches,H=void 0===I?e.includeMatches:I,L=r.ignoreLocation,j=void 0===L?e.ignoreLocation:L;if(n.length>l)throw new Error("Pattern length exceeds max of ".concat(l,"."));for(var y,d=n.length,g=t.length,i=Math.max(0,Math.min(V,g)),m=U,h=i,x=z>1||H,S=x?Array(g):[];(y=t.indexOf(n,h))>-1;)if(P=f(n,{currentLocation:y,expectedLocation:i,distance:C,ignoreLocation:j}),m=Math.min(P,m),h=y+d,x)for(b=0;b<d;)S[y+b]=1,b+=1;h=-1;for(var w=[],A=1,O=d+g,W=1<<d-1,c=0;c<d;c+=1){for(p=0,a=O;p<a;)f(n,{errors:c,currentLocation:i+a,expectedLocation:i,distance:C,ignoreLocation:j})<=m?p=a:O=a,a=Math.floor((O-p)/2+p);var O=a,T=Math.max(1,i-a+1),k=$?g:Math.min(i+a,g)+d,u=Array(k+2);u[k+1]=(1<<c)-1;for(o=k;o>=T;o-=1)if(v=o-1,E=s[t.charAt(v)],x&&(S[v]=+!!E),u[o]=(u[o+1]<<1|1)&E,c&&(u[o]|=(w[o+1]|w[o])<<1|1|w[o+1]),u[o]&W&&(A=f(n,{errors:c,currentLocation:v,expectedLocation:i,distance:C,ignoreLocation:j}))<=m){if(m=A,(h=v)<=i)break;T=Math.max(1,2*i-h)}if(f(n,{errors:c+1,currentLocation:i,expectedLocation:i,distance:C,ignoreLocation:j})>m)break;w=u}return _={isMatch:h>=0,score:Math.max(.001,A)},x&&(M=function(){for(var i,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.minMatchCharLength,o=[],t=-1,r=-1,n=0,c=s.length;n<c;n+=1)i=s[n],i&&-1===t?t=n:i||-1===t||((r=n-1)-t+1>=a&&o.push([t,r]),t=-1);return s[n-1]&&n-t>=a&&o.push([t,n-1]),o}(S,z),M.length?H&&(_.indices=M):_.isMatch=!1),_}function J(e){for(var s,n={},t=0,o=e.length;t<o;t+=1)s=e.charAt(t),n[s]=(n[s]||0)|1<<o-t-1;return n}_=function(){function s(n){var i,a,c,y=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},h=o.location,C=void 0===h?e.location:h,g=o.threshold,O=void 0===g?e.threshold:g,d=o.distance,A=void 0===d?e.distance:d,m=o.includeMatches,E=void 0===m?e.includeMatches:m,p=o.findAllMatches,x=void 0===p?e.findAllMatches:p,v=o.minMatchCharLength,_=void 0===v?e.minMatchCharLength:v,u=o.isCaseSensitive,j=void 0===u?e.isCaseSensitive:u,b=o.ignoreLocation,w=void 0===b?e.ignoreLocation:b;if(t(this,s),this.options={location:C,threshold:O,distance:A,includeMatches:E,findAllMatches:x,minMatchCharLength:_,isCaseSensitive:j,ignoreLocation:w},this.pattern=j?n:n.toLowerCase(),this.chunks=[],this.pattern.length)if(a=function(e,t){y.chunks.push({pattern:e,alphabet:J(e),startIndex:t})},i=this.pattern.length,i>l){for(var r=0,f=i%l,k=i-f;r<k;)a(this.pattern.substr(r,l),r),r+=l;f&&(c=i-l,a(this.pattern.substr(c),c))}else a(this.pattern,0)}return n(s,[{key:"searchIn",value:function(e){var r=this.options,g=r.isCaseSensitive,i=r.includeMatches;if(g||(e=e.toLowerCase()),this.pattern===e)return a={isMatch:!0,score:0},i&&(a.indices=[[0,e.length-1]]),a;var o,a,t=this.options,p=t.location,l=t.distance,f=t.threshold,m=t.findAllMatches,u=t.minMatchCharLength,h=t.ignoreLocation,s=[],c=0,n=!1;return this.chunks.forEach(function(t){var g=t.pattern,v=t.alphabet,b=t.startIndex,o=U(e,g,v,{location:p+b,distance:l,threshold:f,findAllMatches:m,minMatchCharLength:u,includeMatches:i,ignoreLocation:h}),a=o.isMatch,j=o.score,r=o.indices;a&&(n=!0),c+=j,a&&r&&(s=[].concat(d(s),d(r)))}),o={isMatch:n,score:n?c/this.chunks.length:1},n&&i&&(o.indices=s),o}}]),s}(),a=function(){function e(n){t(this,e),this.pattern=n}return n(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return $(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return $(e,this.singleRegex)}}]),e}();function $(e,t){var n=e.match(t);return n?n[1]:null}var a,l,u,_,A,Q=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),s}(a),X=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),s}(a),ne=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),s}(a),q=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),s}(a),Y=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),s}(a),G=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),s}(a),S=function(s){c(o,s);var i=r(o);function o(n){var f,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},h=s.location,g=void 0===h?e.location:h,l=s.threshold,p=void 0===l?e.threshold:l,u=s.distance,j=void 0===u?e.distance:u,a=s.includeMatches,w=void 0===a?e.includeMatches:a,d=s.findAllMatches,v=void 0===d?e.findAllMatches:d,m=s.minMatchCharLength,b=void 0===m?e.minMatchCharLength:m,r=s.isCaseSensitive,y=void 0===r?e.isCaseSensitive:r,c=s.ignoreLocation,O=void 0===c?e.ignoreLocation:c;return t(this,o),(f=i.call(this,n))._bitapSearch=new _(n,{location:g,threshold:p,distance:j,includeMatches:w,findAllMatches:v,minMatchCharLength:b,isCaseSensitive:y,ignoreLocation:O}),f}return n(o,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),o}(a),W=function(e){c(s,e);var o=r(s);function s(e){return t(this,s),o.call(this,e)}return n(s,[{key:"search",value:function(e){for(var t,o,n=0,s=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,s.push([t,n-1]);return o=!!s.length,{isMatch:o,score:o?0:1,indices:s}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),s}(a),j=[Q,W,ne,q,G,Y,X,S],I=j.length,ee=/ +(?=(?:[^"]*"[^"]*")*[^"]*$)/,te=new Set([S.type,W.type]),K=function(){function s(n){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=o.isCaseSensitive,r=void 0===a?e.isCaseSensitive:a,c=o.includeMatches,y=void 0===c?e.includeMatches:c,d=o.minMatchCharLength,v=void 0===d?e.minMatchCharLength:d,h=o.ignoreLocation,f=void 0===h?e.ignoreLocation:h,m=o.findAllMatches,p=void 0===m?e.findAllMatches:m,i=o.location,g=void 0===i?e.location:i,u=o.threshold,b=void 0===u?e.threshold:u,l=o.distance,_=void 0===l?e.distance:l;t(this,s),this.query=null,this.options={isCaseSensitive:r,includeMatches:y,minMatchCharLength:v,findAllMatches:p,ignoreLocation:f,location:g,threshold:b,distance:_},this.pattern=r?n:n.toLowerCase(),this.query=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map(function(e){for(var a,r,c,l,d=e.trim().split(ee).filter(function(e){return e&&!!e.trim()}),s=[],o=0,h=d.length;o<h;o+=1){for(var u=d[o],i=!1,n=-1;!i&&++n<I;)a=j[n],r=a.isMultiMatch(u),r&&(s.push(new a(r,t)),i=!0);if(!i)for(n=-1;++n<I;)if(c=j[n],l=c.isSingleMatch(u),l){s.push(new c(l,t));break}}return s})}(this.pattern,this.options)}return n(s,[{key:"searchIn",value:function(e){if(o=this.query,!o)return{isMatch:!1,score:1};u=this.options,l=u.includeMatches,e=u.isCaseSensitive?e:e.toLowerCase();for(var s,o,i,c,l,u,f,g,n=0,t=[],a=0,r=0,j=o.length;r<j;r+=1){i=o[r],t.length=0,n=0;for(s=0,f=i.length;s<f;s+=1){var m=i[s],h=m.search(e),v=h.isMatch,p=h.indices,b=h.score;if(!v){a=0,n=0,t.length=0;break}n+=1,a+=b,l&&(g=m.constructor.type,te.has(g)?t=[].concat(d(t),d(p)):t.push(p))}if(n)return c={isMatch:!0,score:a/n},l&&(c.indices=t),c}return{isMatch:!1,score:1}}}],[{key:"condition",value:function(e,t){return t.useExtendedSearch}}]),s}(),p=[];function v(e,t){for(var s,n=0,o=p.length;n<o;n+=1)if(s=p[n],s.condition(e,t))return new s(e,t);return new _(e,t)}var g="$and",ae="$or",D="$path",ce="$val",w=function(e){return!!e[g]||!!e[ae]},T=function(e){return C({},g,Object.keys(e).map(function(t){return C({},t,e[t])}))};function ue(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,s=void 0===n||n;return w(e)||(e=T(e)),function e(n){var r,c,d,u,a=Object.keys(n),l=function(e){return!!e[D]}(n);if(!l&&a.length>1&&!w(n))return e(T(n));if(function(e){return!i(e)&&B(e)&&!w(e)}(n)){if(r=l?n[D]:a[0],c=l?n[ce]:n[r],!o(c))throw new Error(function(e){return"Invalid value for key ".concat(e)}(r));return d={keyId:b(r),pattern:c},s&&(d.searcher=v(c,t)),d}return u={children:[],operator:a[0]},a.forEach(function(t){var s=n[t];i(s)&&s.forEach(function(t){u.children.push(e(t))})}),u}(e)}function he(e,t){var n=e.matches;t.matches=[],s(n)&&n.forEach(function(e){if(s(e.indices)&&e.indices.length){var n={indices:e.indices,value:e.value};e.key&&(n.key=e.key.src),e.idx>-1&&(n.refIndex=e.idx),t.matches.push(n)}})}function me(e,t){t.score=e.score}return u=function(){function a(n){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;t(this,a),this.options=h(h({},e),s),this.options.useExtendedSearch,this._keyStore=new fe(this.options.keys),this.setCollection(n,o)}return n(a,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof E))throw new Error("Incorrect 'index' type");this._myIndex=t||L(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){s(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var t,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},n=[],e=0,s=this._docs.length;e<s;e+=1)t=this._docs[e],o(t,e)&&(this.removeAt(e),e-=1,s-=1,n.push(t));return n}},{key:"removeAt",value:function(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}},{key:"getIndex",value:function(){return this._myIndex}},{key:"search",value:function(t){var a=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).limit,i=void 0===a?-1:a,n=this.options,r=n.includeMatches,c=n.includeScore,l=n.shouldSort,d=n.sortFn,u=n.ignoreFieldNorm,s=o(t)?o(this._docs[0])?this._searchStringList(t):this._searchObjectList(t):this._searchLogical(t);return function(t,n){var s=n.ignoreFieldNorm,o=void 0===s?e.ignoreFieldNorm:s;t.forEach(function(e){var t=1;e.matches.forEach(function(e){var n=e.key,a=e.norm,s=e.score,i=n?n.weight:null;t*=Math.pow(0===s&&i?Number.EPSILON:s,(i||1)*(o?1:a))}),e.score=t})}(s,{ignoreFieldNorm:u}),l&&s.sort(d),V(i)&&i>-1&&(s=s.slice(0,i)),function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=o.includeMatches,r=void 0===i?e.includeMatches:i,a=o.includeScore,c=void 0===a?e.includeScore:a,s=[];return r&&s.push(he),c&&s.push(me),t.map(function(e){var t=e.idx,o={item:n[t],refIndex:t};return s.length&&s.forEach(function(t){t(e,o)}),o})}(s,this._docs,{includeMatches:r,includeScore:c})}},{key:"_searchStringList",value:function(e){var n=v(e,this.options),o=this._myIndex.records,t=[];return o.forEach(function(e){var o=e.v,a=e.i,r=e.n;if(s(o)){var i=n.searchIn(o),c=i.isMatch,l=i.score,d=i.indices;c&&t.push({item:o,idx:a,matches:[{score:l,value:o,norm:r,indices:d}]})}}),t}},{key:"_searchLogical",value:function(e){var n=this,i=ue(e,this.options),a=function e(t,s,o){if(!t.children){var c,l=t.keyId,u=t.searcher,i=n._findMatches({key:n._keyStore.get(l),value:n._myIndex.getValueForItemAtKeyId(s,l),searcher:u});return i&&i.length?[{idx:o,item:s,matches:i}]:[]}for(var a=[],r=0,h=t.children.length;r<h;r+=1)if(c=e(t.children[r],s,o),c.length)a.push.apply(a,d(c));else if(t.operator===g)return[];return a},r=this._myIndex.records,t={},o=[];return r.forEach(function(e){var c,r=e.$,n=e.i;s(r)&&(c=a(i,r,n),c.length&&(t[n]||(t[n]={idx:n,item:r,matches:[]},o.push(t[n])),c.forEach(function(e){var s,o=e.matches;(s=t[n].matches).push.apply(s,d(o))})))}),o}},{key:"_searchObjectList",value:function(e){var o=this,i=v(e,this.options),t=this._myIndex,a=t.keys,r=t.records,n=[];return r.forEach(function(e){var t,r=e.$,c=e.i;s(r)&&(t=[],a.forEach(function(e,n){t.push.apply(t,d(o._findMatches({key:e,value:r[n],searcher:i})))}),t.length&&n.push({idx:c,item:r,matches:t}))}),n}},{key:"_findMatches",value:function(e){var a=e.key,t=e.value,r=e.searcher;if(!s(t))return[];if(n=[],i(t))t.forEach(function(e){var t=e.v,i=e.i,c=e.n;if(s(t)){var o=r.searchIn(t),l=o.isMatch,d=o.score,u=o.indices;l&&n.push({score:d,key:a,value:t,idx:i,norm:c,indices:u})}});else{var n,c=t.v,l=t.n,o=r.searchIn(c),d=o.isMatch,u=o.score,h=o.indices;d&&n.push({score:u,key:a,value:c,norm:l,indices:h})}return n}}]),a}(),u.version="7.0.0",u.createIndex=L,u.parseIndex=function(t){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=s.getFn,a=void 0===o?e.getFn:o,i=s.fieldNormWeight,r=void 0===i?e.fieldNormWeight:i,c=t.keys,l=t.records,n=new E({getFn:a,fieldNormWeight:r});return n.setKeys(c),n.setIndexRecords(l),n},u.config=e,function(){p.push.apply(p,arguments)}(K),u},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t();var e,t,fuse,showButton=document.getElementById("search-button"),scriptBundle,copyText,copiedText,showButtonMobile=document.getElementById("search-button-mobile"),hideButton=document.getElementById("close-search-button"),wrapper=document.getElementById("search-wrapper"),modal=document.getElementById("search-modal"),input=document.getElementById("search-query"),output=document.getElementById("search-results"),first=output.firstChild,last=output.lastChild,searchVisible=!1,indexed=!1,hasResults=!1;showButton?showButton.addEventListener("click",displaySearch):null,showButtonMobile?showButtonMobile.addEventListener("click",displaySearch):null,hideButton.addEventListener("click",hideSearch),wrapper.addEventListener("click",hideSearch),modal.addEventListener("click",function(e){return e.stopPropagation(),e.stopImmediatePropagation(),!1}),document.addEventListener("keydown",function(e){e.key=="/"&&(searchVisible||(e.preventDefault(),displaySearch())),e.key=="Escape"&&hideSearch(),e.key=="ArrowDown"&&searchVisible&&hasResults&&(e.preventDefault(),document.activeElement==input?first.focus():document.activeElement==last?last.focus():document.activeElement.parentElement.nextSibling.firstElementChild.focus()),e.key=="ArrowUp"&&searchVisible&&hasResults&&(e.preventDefault(),document.activeElement==input?input.focus():document.activeElement==first?input.focus():document.activeElement.parentElement.previousSibling.firstElementChild.focus()),e.key=="Enter"&&(searchVisible&&hasResults?(e.preventDefault(),document.activeElement==input?first.focus():document.activeElement.click()):e.preventDefault())}),input.onkeyup=function(){executeQuery(this.value)};function displaySearch(){indexed||buildIndex(),searchVisible||(document.body.style.overflow="hidden",wrapper.style.visibility="visible",input.focus(),searchVisible=!0)}function hideSearch(){searchVisible&&(document.body.style.overflow="visible",wrapper.style.visibility="hidden",input.value="",output.innerHTML="",document.activeElement.blur(),searchVisible=!1)}function fetchJSON(e,t){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(n.readyState===4&&n.status===200){var e=JSON.parse(n.responseText);t&&t(e)}},n.open("GET",e),n.send()}function buildIndex(){var e=wrapper.getAttribute("data-url"),e=e.replace(/\/?$/,"/");fetchJSON(e+"index.json",function(e){var t={shouldSort:!0,ignoreLocation:!0,threshold:0,includeMatches:!0,keys:[{name:"title",weight:.8},{name:"section",weight:.2},{name:"summary",weight:.6},{name:"content",weight:.4}]};fuse=new Fuse(e,t),indexed=!0})}function executeQuery(e){let n=fuse.search(e),t="";n.length>0?(n.forEach(function(e){var s=e.item.externalUrl?e.item.title+'<span class="text-xs ml-2 align-center cursor-default text-neutral-400 dark:text-neutral-500">'+e.item.externalUrl+"</span>":e.item.title,o=e.item.externalUrl?'target="_blank" rel="noopener" href="'+e.item.externalUrl+'"':'href="'+e.item.permalink+'"';t=t+`<li class="mb-2"> + <a class="flex items-center px-3 py-2 rounded-md appearance-none bg-neutral-100 dark:bg-neutral-700 focus:bg-primary-100 hover:bg-primary-100 dark:hover:bg-primary-900 dark:focus:bg-primary-900 focus:outline-dotted focus:outline-transparent focus:outline-2" + ${o} tabindex="0"> + <div class="grow"> + <div class="-mb-1 text-lg font-bold"> + ${s} + </div> + <div class="text-sm text-neutral-500 dark:text-neutral-400">${e.item.section}<span class="px-2 text-primary-500">·</span>${e.item.date?e.item.date:""}</span></div> + <div class="text-sm italic">${e.item.summary}</div> + </div> + <div class="ml-2 ltr:block rtl:hidden text-neutral-500">→</div> + <div class="mr-2 ltr:hidden rtl:block text-neutral-500">←</div> + </a> + </li>`}),hasResults=!0):(t="",hasResults=!1),output.innerHTML=t,n.length>0&&(first=output.firstChild.firstElementChild,last=output.lastChild.firstElementChild)}scriptBundle=document.getElementById("script-bundle"),copyText=scriptBundle&&scriptBundle.getAttribute("data-copy")?scriptBundle.getAttribute("data-copy"):"Copy",copiedText=scriptBundle&&scriptBundle.getAttribute("data-copied")?scriptBundle.getAttribute("data-copied"):"Copied";function createCopyButton(e){const t=document.createElement("button");t.className="copy-button",t.type="button",t.ariaLabel=copyText,t.innerText=copyText,t.addEventListener("click",()=>copyCodeToClipboard(t,e)),addCopyButtonToDom(t,e)}async function copyCodeToClipboard(e,t){const n=t.querySelector(":last-child").innerText;try{result=await navigator.permissions.query({name:"clipboard-write"}),result.state=="granted"||result.state=="prompt"?await navigator.clipboard.writeText(n):copyCodeBlockExecCommand(n,t)}catch{copyCodeBlockExecCommand(n,t)}finally{codeWasCopied(e)}}function copyCodeBlockExecCommand(e,t){const n=document.createElement("textArea");n.contentEditable="true",n.readOnly="false",n.className="copy-textarea",n.value=e,t.insertBefore(n,t.firstChild);const s=document.createRange();s.selectNodeContents(n);const o=window.getSelection();o.removeAllRanges(),o.addRange(s),n.setSelectionRange(0,999999),document.execCommand("copy"),t.removeChild(n)}function codeWasCopied(e){e.blur(),e.innerText=copiedText,setTimeout(function(){e.innerText=copyText},2e3)}function addCopyButtonToDom(e,t){t.insertBefore(e,t.firstChild);const n=document.createElement("div");n.className="highlight-wrapper",t.parentNode.insertBefore(n,t),n.appendChild(t)}window.addEventListener("DOMContentLoaded",e=>{document.querySelectorAll(".highlight").forEach(e=>createCopyButton(e))}) \ No newline at end of file diff --git a/js/main.min.cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e.js b/js/main.min.cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e.js deleted file mode 100644 index e69de29..0000000 diff --git a/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js b/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js new file mode 100644 index 0000000..3cde549 --- /dev/null +++ b/js/page.min.b06a29d42a4ed16787978e2eee1e8c797b7698db2bc14ccee78f5c80ac566fc996190a73ad80a5e987558474b20b96fa38f7d85b405f165ff72b7b163c5ad11b.js @@ -0,0 +1 @@ +var liked_page=!1,viewed,liked,id=oid&&oid.replaceAll("/","-"),id_likes=oid_likes&&oid_likes.replaceAll("/","-");typeof auth!="undefined"&&(viewed=localStorage.getItem(id),viewed||auth.signInAnonymously().then(()=>{var e=db.collection("views").doc(id);localStorage.setItem(id,!0),e.get().then(e=>{e.exists?db.collection("views").doc(id).update({views:firebase.firestore.FieldValue.increment(1)}):db.collection("views").doc(id).set({views:1})}).catch(e=>{console.log("Error getting document:",e)})}).catch(e=>{var t=e.code,n=e.message;console.error(t,n)}),liked=localStorage.getItem(id_likes),liked&&(liked_page=!0,document.querySelectorAll("span[id='button_likes_heart']")[0].style.display="",document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display="none",document.querySelectorAll("span[id='button_likes_text']")[0].innerText=""));function like_article(e){auth.signInAnonymously().then(()=>{var t=db.collection("likes").doc(e);t.get().then(t=>{liked_page=!0,localStorage.setItem(e,!0),document.querySelectorAll("span[id='button_likes_heart']")[0].style.display="",document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display="none",document.querySelectorAll("span[id='button_likes_text']")[0].innerText="",t.exists?db.collection("likes").doc(e).update({likes:firebase.firestore.FieldValue.increment(1)}):db.collection("likes").doc(e).set({likes:1})}).catch(e=>{console.log("Error getting document:",e)})}).catch(e=>{var t=e.code,n=e.message;console.error(t,n)})}function remove_like_article(e){auth.signInAnonymously().then(()=>{var t=db.collection("likes").doc(e);t.get().then(t=>{liked_page=!1,localStorage.removeItem(e),document.querySelectorAll("span[id='button_likes_heart']")[0].style.display="none",document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display="",document.querySelectorAll("span[id='button_likes_text']")[0].innerText="\xa0Like",t.exists?db.collection("likes").doc(e).update({likes:firebase.firestore.FieldValue.increment(-1)}):db.collection("likes").doc(e).set({likes:0})}).catch(e=>{console.log("Error getting document:",e)})}).catch(e=>{var t=e.code,n=e.message;console.error(t,n)})}function process_article(){liked_page?remove_like_article(id_likes):like_article(id_likes)} \ No newline at end of file diff --git a/js/process.min.1d5a3f4a9583d31668d777478074c0526be93b07cc79f303dce0ecc502226b04072b27e78185a927a25fd226da1de5a457c13cb89c85596512bd500006ee7602.js b/js/process.min.1d5a3f4a9583d31668d777478074c0526be93b07cc79f303dce0ecc502226b04072b27e78185a927a25fd226da1de5a457c13cb89c85596512bd500006ee7602.js deleted file mode 100644 index 9a4277d..0000000 --- a/js/process.min.1d5a3f4a9583d31668d777478074c0526be93b07cc79f303dce0ecc502226b04072b27e78185a927a25fd226da1de5a457c13cb89c85596512bd500006ee7602.js +++ /dev/null @@ -1 +0,0 @@ -if(typeof auth!="undefined"){var viewsCollection=db.collection("views"),update_views,update_likes,likesCollection=db.collection("likes");function numberWithCommas(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}update_views=function(e,t){viewsCollection.doc(t).onSnapshot(t=>{var s,n=t.data();n&&(s=document.querySelectorAll("span[id='"+e+"']")[0].innerText.split(" ")[1],document.querySelectorAll("span[id='"+e+"']")[0].innerText=numberWithCommas(n.views)+" "+s)})},update_likes=function(e,t){likesCollection.doc(t).onSnapshot(t=>{var s,n=t.data();n&&(s=document.querySelectorAll("span[id='"+e+"']")[0].innerText.split(" ")[1],document.querySelectorAll("span[id='"+e+"']")[0].innerText=numberWithCommas(n.likes)+" "+s)})},auth.signInAnonymously().then(()=>{var e,t,n,s,o=document.querySelectorAll("span[id^='views_']");for(n in o)e=o[n].id,t=e&&e.replaceAll("/","-"),t&&update_views(e,t);s=document.querySelectorAll("span[id^='likes_']");for(n in s)e=s[n].id,t=e&&e.replaceAll("/","-"),t&&update_likes(e,t)}).catch(e=>{var t=e.code,n=e.message;console.error(t,n)})} \ No newline at end of file diff --git a/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js b/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js new file mode 100644 index 0000000..c4c5095 --- /dev/null +++ b/js/process.min.62060bb247f4de2b6dde45903668fefb68d792f365587605177b1227c0cf43588701edaca0cb40e2c8e2789bd5ce67c1d2a215b9fb258c3496a7cd25e7cb5fdf.js @@ -0,0 +1 @@ +if(typeof auth!="undefined"){var viewsCollection=db.collection("views"),update_views,update_likes,likesCollection=db.collection("likes");function numberWithCommas(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function toggleLoaders(e){var t,s,n=e.className;if(n=="")return;t=n.split(" ");for(s in t)e.classList.toggle(t[s])}update_views=function(e,t){viewsCollection.doc(t).onSnapshot(t=>{var n=t.data();n?e.innerText=numberWithCommas(n.views):e.innerText=0,toggleLoaders(e)})},update_likes=function(e,t){likesCollection.doc(t).onSnapshot(t=>{var n=t.data();n?e.innerText=numberWithCommas(n.likes):e.innerText=0,toggleLoaders(e)})},auth.signInAnonymously().then(()=>{var e,t,n,s,o=document.querySelectorAll("span[id^='views_']");for(n in o)e=o[n],t=e.id?e.id.replaceAll("/","-"):e.id,t&&update_views(e,t);s=document.querySelectorAll("span[id^='likes_']");for(n in s)e=s[n],t=e.id?e.id.replaceAll("/","-"):e.id,t&&update_likes(e,t)}).catch(e=>{var t=e.code,n=e.message;console.error(t,n)})} \ No newline at end of file diff --git a/js/zoom.min.js b/js/zoom.min.js index 938bfd5..b1214b7 100644 --- a/js/zoom.min.js +++ b/js/zoom.min.js @@ -1 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).mediumZoom=t()}(this,(function(){"use strict";var e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},t=function(e){return"IMG"===e.tagName},o=function(e){return e&&1===e.nodeType},n=function(e){return".svg"===(e.currentSrc||e.src).substr(-4).toLowerCase()},i=function(e){try{return Array.isArray(e)?e.filter(t):function(e){return NodeList.prototype.isPrototypeOf(e)}(e)?[].slice.call(e).filter(t):o(e)?[e].filter(t):"string"==typeof e?[].slice.call(document.querySelectorAll(e)).filter(t):[]}catch(e){throw new TypeError("The provided selector is invalid.\nExpects a CSS selector, a Node element, a NodeList or an array.\nSee: https://github.com/francoischalifour/medium-zoom")}},r=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t},d=function(e){var t=e.getBoundingClientRect(),o=t.top,n=t.left,i=t.width,r=t.height,d=e.cloneNode(),m=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,a=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return d.removeAttribute("id"),d.style.position="absolute",d.style.top=o+m+"px",d.style.left=n+a+"px",d.style.width=i+"px",d.style.height=r+"px",d.style.transform="",d},m=function(t,o){var n=e({bubbles:!1,cancelable:!1,detail:void 0},o);if("function"==typeof window.CustomEvent)return new CustomEvent(t,n);var i=document.createEvent("CustomEvent");return i.initCustomEvent(t,n.bubbles,n.cancelable,n.detail),i};return function(e,t){void 0===t&&(t={});var o=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===o&&n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}(".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}"),function t(a){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=window.Promise||function(e){function t(){}e(t,t)},u=function(e){var t=e.target;t!==N?-1!==O.indexOf(t)&&w({target:t}):E()},s=function(){if(!A&&T.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(k-e)>S.scrollOffset&&setTimeout(E,150)}},f=function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||E()},p=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t;if(t.background&&(N.style.background=t.background),t.container&&t.container instanceof Object&&(n.container=e({},S.container,t.container)),t.template){var i=o(t.template)?t.template:document.querySelector(t.template);n.template=i}return S=e({},S,n),O.forEach((function(e){e.dispatchEvent(m("medium-zoom:update",{detail:{zoom:j}}))})),j},g=function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(e({},S,o))},v=function(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];var n=t.reduce((function(e,t){return[].concat(e,i(t))}),[]);return n.filter((function(e){return-1===O.indexOf(e)})).forEach((function(e){O.push(e),e.classList.add("medium-zoom-image")})),x.forEach((function(e){var t=e.type,o=e.listener,i=e.options;n.forEach((function(e){e.addEventListener(t,o,i)}))})),j},h=function(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];T.zoomed&&E();var n=t.length>0?t.reduce((function(e,t){return[].concat(e,i(t))}),[]):O;return n.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(m("medium-zoom:detach",{detail:{zoom:j}}))})),O=O.filter((function(e){return-1===n.indexOf(e)})),j},z=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return O.forEach((function(n){n.addEventListener("medium-zoom:"+e,t,o)})),x.push({type:"medium-zoom:"+e,listener:t,options:o}),j},y=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return O.forEach((function(n){n.removeEventListener("medium-zoom:"+e,t,o)})),x=x.filter((function(o){return!(o.type==="medium-zoom:"+e&&o.listener.toString()===t.toString())})),j},b=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.target,r=function(){var t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},i=void 0,r=void 0;if(S.container)if(S.container instanceof Object)i=(t=e({},t,S.container)).width-t.left-t.right-2*S.margin,r=t.height-t.top-t.bottom-2*S.margin;else{var d=(o(S.container)?S.container:document.querySelector(S.container)).getBoundingClientRect(),m=d.width,a=d.height,l=d.left,c=d.top;t=e({},t,{width:m,height:a,left:l,top:c})}i=i||t.width-2*S.margin,r=r||t.height-2*S.margin;var u=T.zoomedHd||T.original,s=n(u)?i:u.naturalWidth||i,f=n(u)?r:u.naturalHeight||r,p=u.getBoundingClientRect(),g=p.top,v=p.left,h=p.width,z=p.height,y=Math.min(s,i)/h,b=Math.min(f,r)/z,E=Math.min(y,b),w="scale("+E+") translate3d("+((i-h)/2-v+S.margin+t.left)/E+"px, "+((r-z)/2-g+S.margin+t.top)/E+"px, 0)";T.zoomed.style.transform=w,T.zoomedHd&&(T.zoomedHd.style.transform=w)};return new c((function(e){if(i&&-1===O.indexOf(i))e(j);else{if(T.zoomed)e(j);else{if(i)T.original=i;else{if(!(O.length>0))return void e(j);var t=O;T.original=t[0]}if(T.original.dispatchEvent(m("medium-zoom:open",{detail:{zoom:j}})),k=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,A=!0,T.zoomed=d(T.original),document.body.appendChild(N),S.template){var n=o(S.template)?S.template:document.querySelector(S.template);T.template=document.createElement("div"),T.template.appendChild(n.content.cloneNode(!0)),document.body.appendChild(T.template)}if(document.body.appendChild(T.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),T.original.classList.add("medium-zoom-image--hidden"),T.zoomed.classList.add("medium-zoom-image--opened"),T.zoomed.addEventListener("click",E),T.zoomed.addEventListener("transitionend",(function t(){A=!1,T.zoomed.removeEventListener("transitionend",t),T.original.dispatchEvent(m("medium-zoom:opened",{detail:{zoom:j}})),e(j)})),T.original.getAttribute("data-zoom-src")){T.zoomedHd=T.zoomed.cloneNode(),T.zoomedHd.removeAttribute("srcset"),T.zoomedHd.removeAttribute("sizes"),T.zoomedHd.src=T.zoomed.getAttribute("data-zoom-src"),T.zoomedHd.onerror=function(){clearInterval(a),console.warn("Unable to reach the zoom image target "+T.zoomedHd.src),T.zoomedHd=null,r()};var a=setInterval((function(){T.zoomedHd.complete&&(clearInterval(a),T.zoomedHd.classList.add("medium-zoom-image--opened"),T.zoomedHd.addEventListener("click",E),document.body.appendChild(T.zoomedHd),r())}),10)}else if(T.original.hasAttribute("srcset")){T.zoomedHd=T.zoomed.cloneNode(),T.zoomedHd.removeAttribute("sizes"),T.zoomedHd.removeAttribute("loading");var l=T.zoomedHd.addEventListener("load",(function(){T.zoomedHd.removeEventListener("load",l),T.zoomedHd.classList.add("medium-zoom-image--opened"),T.zoomedHd.addEventListener("click",E),document.body.appendChild(T.zoomedHd),r()}))}else r()}}}))},E=function(){return new c((function(e){if(!A&&T.original){A=!0,document.body.classList.remove("medium-zoom--opened"),T.zoomed.style.transform="",T.zoomedHd&&(T.zoomedHd.style.transform=""),T.template&&(T.template.style.transition="opacity 150ms",T.template.style.opacity=0),T.original.dispatchEvent(m("medium-zoom:close",{detail:{zoom:j}})),T.zoomed.addEventListener("transitionend",(function t(){T.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(T.zoomed),T.zoomedHd&&document.body.removeChild(T.zoomedHd),document.body.removeChild(N),T.zoomed.classList.remove("medium-zoom-image--opened"),T.template&&document.body.removeChild(T.template),A=!1,T.zoomed.removeEventListener("transitionend",t),T.original.dispatchEvent(m("medium-zoom:closed",{detail:{zoom:j}})),T.original=null,T.zoomed=null,T.zoomedHd=null,T.template=null,e(j)}))}else e(j)}))},w=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return T.original?E():b({target:t})},L=function(){return S},H=function(){return O},C=function(){return T.original},O=[],x=[],A=!1,k=0,S=l,T={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(a)?S=a:(a||"string"==typeof a)&&v(a),S=e({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},S);var N=r(S.background);document.addEventListener("click",u),document.addEventListener("keyup",f),document.addEventListener("scroll",s),window.addEventListener("resize",E);var j={open:b,close:E,toggle:w,update:p,clone:g,attach:v,detach:h,on:z,off:y,getOptions:L,getImages:H,getZoomedImage:C};return j}})); \ No newline at end of file +/*! medium-zoom 1.0.6 | MIT License | https://github.com/francoischalifour/medium-zoom */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).mediumZoom=t()}(this,(function(){"use strict";var e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},t=function(e){return"IMG"===e.tagName},o=function(e){return e&&1===e.nodeType},n=function(e){return".svg"===(e.currentSrc||e.src).substr(-4).toLowerCase()},i=function(e){try{return Array.isArray(e)?e.filter(t):function(e){return NodeList.prototype.isPrototypeOf(e)}(e)?[].slice.call(e).filter(t):o(e)?[e].filter(t):"string"==typeof e?[].slice.call(document.querySelectorAll(e)).filter(t):[]}catch(e){throw new TypeError("The provided selector is invalid.\nExpects a CSS selector, a Node element, a NodeList or an array.\nSee: https://github.com/francoischalifour/medium-zoom")}},r=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t},d=function(e){var t=e.getBoundingClientRect(),o=t.top,n=t.left,i=t.width,r=t.height,d=e.cloneNode(),m=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,a=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return d.removeAttribute("id"),d.style.position="absolute",d.style.top=o+m+"px",d.style.left=n+a+"px",d.style.width=i+"px",d.style.height=r+"px",d.style.transform="",d},m=function(t,o){var n=e({bubbles:!1,cancelable:!1,detail:void 0},o);if("function"==typeof window.CustomEvent)return new CustomEvent(t,n);var i=document.createEvent("CustomEvent");return i.initCustomEvent(t,n.bubbles,n.cancelable,n.detail),i};return function(e,t){void 0===t&&(t={});var o=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===o&&n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}(".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}"),function t(a){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=window.Promise||function(e){function t(){}e(t,t)},u=function(e){var t=e.target;t!==N?-1!==O.indexOf(t)&&w({target:t}):E()},s=function(){if(!A&&T.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(k-e)>S.scrollOffset&&setTimeout(E,150)}},f=function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||E()},p=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t;if(t.background&&(N.style.background=t.background),t.container&&t.container instanceof Object&&(n.container=e({},S.container,t.container)),t.template){var i=o(t.template)?t.template:document.querySelector(t.template);n.template=i}return S=e({},S,n),O.forEach((function(e){e.dispatchEvent(m("medium-zoom:update",{detail:{zoom:j}}))})),j},g=function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(e({},S,o))},v=function(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];var n=t.reduce((function(e,t){return[].concat(e,i(t))}),[]);return n.filter((function(e){return-1===O.indexOf(e)})).forEach((function(e){O.push(e),e.classList.add("medium-zoom-image")})),x.forEach((function(e){var t=e.type,o=e.listener,i=e.options;n.forEach((function(e){e.addEventListener(t,o,i)}))})),j},h=function(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];T.zoomed&&E();var n=t.length>0?t.reduce((function(e,t){return[].concat(e,i(t))}),[]):O;return n.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(m("medium-zoom:detach",{detail:{zoom:j}}))})),O=O.filter((function(e){return-1===n.indexOf(e)})),j},z=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return O.forEach((function(n){n.addEventListener("medium-zoom:"+e,t,o)})),x.push({type:"medium-zoom:"+e,listener:t,options:o}),j},y=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return O.forEach((function(n){n.removeEventListener("medium-zoom:"+e,t,o)})),x=x.filter((function(o){return!(o.type==="medium-zoom:"+e&&o.listener.toString()===t.toString())})),j},b=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.target,r=function(){var t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},i=void 0,r=void 0;if(S.container)if(S.container instanceof Object)i=(t=e({},t,S.container)).width-t.left-t.right-2*S.margin,r=t.height-t.top-t.bottom-2*S.margin;else{var d=(o(S.container)?S.container:document.querySelector(S.container)).getBoundingClientRect(),m=d.width,a=d.height,l=d.left,c=d.top;t=e({},t,{width:m,height:a,left:l,top:c})}i=i||t.width-2*S.margin,r=r||t.height-2*S.margin;var u=T.zoomedHd||T.original,s=n(u)?i:u.naturalWidth||i,f=n(u)?r:u.naturalHeight||r,p=u.getBoundingClientRect(),g=p.top,v=p.left,h=p.width,z=p.height,y=Math.min(s,i)/h,b=Math.min(f,r)/z,E=Math.min(y,b),w="scale("+E+") translate3d("+((i-h)/2-v+S.margin+t.left)/E+"px, "+((r-z)/2-g+S.margin+t.top)/E+"px, 0)";T.zoomed.style.transform=w,T.zoomedHd&&(T.zoomedHd.style.transform=w)};return new c((function(e){if(i&&-1===O.indexOf(i))e(j);else{if(T.zoomed)e(j);else{if(i)T.original=i;else{if(!(O.length>0))return void e(j);var t=O;T.original=t[0]}if(T.original.dispatchEvent(m("medium-zoom:open",{detail:{zoom:j}})),k=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,A=!0,T.zoomed=d(T.original),document.body.appendChild(N),S.template){var n=o(S.template)?S.template:document.querySelector(S.template);T.template=document.createElement("div"),T.template.appendChild(n.content.cloneNode(!0)),document.body.appendChild(T.template)}if(document.body.appendChild(T.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),T.original.classList.add("medium-zoom-image--hidden"),T.zoomed.classList.add("medium-zoom-image--opened"),T.zoomed.addEventListener("click",E),T.zoomed.addEventListener("transitionend",(function t(){A=!1,T.zoomed.removeEventListener("transitionend",t),T.original.dispatchEvent(m("medium-zoom:opened",{detail:{zoom:j}})),e(j)})),T.original.getAttribute("data-zoom-src")){T.zoomedHd=T.zoomed.cloneNode(),T.zoomedHd.removeAttribute("srcset"),T.zoomedHd.removeAttribute("sizes"),T.zoomedHd.src=T.zoomed.getAttribute("data-zoom-src"),T.zoomedHd.onerror=function(){clearInterval(a),console.warn("Unable to reach the zoom image target "+T.zoomedHd.src),T.zoomedHd=null,r()};var a=setInterval((function(){T.zoomedHd.complete&&(clearInterval(a),T.zoomedHd.classList.add("medium-zoom-image--opened"),T.zoomedHd.addEventListener("click",E),document.body.appendChild(T.zoomedHd),r())}),10)}else if(T.original.hasAttribute("srcset")){T.zoomedHd=T.zoomed.cloneNode(),T.zoomedHd.removeAttribute("sizes"),T.zoomedHd.removeAttribute("loading");var l=T.zoomedHd.addEventListener("load",(function(){T.zoomedHd.removeEventListener("load",l),T.zoomedHd.classList.add("medium-zoom-image--opened"),T.zoomedHd.addEventListener("click",E),document.body.appendChild(T.zoomedHd),r()}))}else r()}}}))},E=function(){return new c((function(e){if(!A&&T.original){A=!0,document.body.classList.remove("medium-zoom--opened"),T.zoomed.style.transform="",T.zoomedHd&&(T.zoomedHd.style.transform=""),T.template&&(T.template.style.transition="opacity 150ms",T.template.style.opacity=0),T.original.dispatchEvent(m("medium-zoom:close",{detail:{zoom:j}})),T.zoomed.addEventListener("transitionend",(function t(){T.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(T.zoomed),T.zoomedHd&&document.body.removeChild(T.zoomedHd),document.body.removeChild(N),T.zoomed.classList.remove("medium-zoom-image--opened"),T.template&&document.body.removeChild(T.template),A=!1,T.zoomed.removeEventListener("transitionend",t),T.original.dispatchEvent(m("medium-zoom:closed",{detail:{zoom:j}})),T.original=null,T.zoomed=null,T.zoomedHd=null,T.template=null,e(j)}))}else e(j)}))},w=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return T.original?E():b({target:t})},L=function(){return S},H=function(){return O},C=function(){return T.original},O=[],x=[],A=!1,k=0,S=l,T={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(a)?S=a:(a||"string"==typeof a)&&v(a),S=e({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},S);var N=r(S.background);document.addEventListener("click",u),document.addEventListener("keyup",f),document.addEventListener("scroll",s),window.addEventListener("resize",E);var j={open:b,close:E,toggle:w,update:p,clone:g,attach:v,detach:h,on:z,off:y,getOptions:L,getImages:H,getZoomedImage:C};return j}})); diff --git a/lib/jquery/jquery.slim.min.js b/lib/jquery/jquery.slim.min.js new file mode 100644 index 0000000..35906b9 --- /dev/null +++ b/lib/jquery/jquery.slim.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},m=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||m).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var de=oe.pop,pe=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function d(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,d)};var ye=m,me=s;!function(){var e,x,w,o,a,C,r,T,p,i,E=me,k=ce.expando,S=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",t="(?:\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",d="\\["+ge+"*("+t+")(?:"+ge+"*([*^$|!~]?=)"+ge+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+t+"))|)"+ge+"*\\]",g=":("+t+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+d+")*)|.*)\\)|)",v=new RegExp(ge+"+","g"),y=new RegExp("^"+ge+"*,"+ge+"*"),m=new RegExp("^"+ge+"*([>+~]|"+ge+")"+ge+"*"),b=new RegExp(ge+"|>"),A=new RegExp(g),D=new RegExp("^"+t+"$"),N={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+d),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},L=/^(?:input|select|textarea|button)$/i,j=/^h\d$/i,O=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,P=/[+~]/,H=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),q=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=K(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{E.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){E={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(V(e),e=e||C,T)){if(11!==d&&(u=O.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return E.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return E.call(n,a),n}else{if(u[2])return E.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return E.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||p&&p.test(t))){if(c=t,f=e,1===d&&(b.test(t)||m.test(t))){(f=P.test(t)&&X(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=k)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+G(l[o]);c=l.join(",")}try{return E.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function B(e){return e[k]=!0,e}function F(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function $(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return B(function(o){return o=+o,B(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function X(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=C&&9===n.nodeType&&n.documentElement&&(r=(C=n).documentElement,T=!ce.isXMLDoc(C),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=C&&(t=C.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=F(function(e){return r.appendChild(e).id=ce.expando,!C.getElementsByName||!C.getElementsByName(ce.expando).length}),le.disconnectedMatch=F(function(e){return i.call(e,"*")}),le.scope=F(function(){return C.querySelectorAll(":scope")}),le.cssHas=F(function(){try{return C.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(x.filter.ID=function(e){var t=e.replace(H,q);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&T){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(H,q);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&T){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},x.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&T)return t.getElementsByClassName(e)},p=[],F(function(e){var t;r.appendChild(e).innerHTML="<a id='"+k+"' href='' disabled='disabled'></a><select id='"+k+"-\r\\' disabled='disabled'><option selected=''></option></select>",e.querySelectorAll("[selected]").length||p.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+k+"-]").length||p.push("~="),e.querySelectorAll("a#"+k+"+*").length||p.push(".#.+[+~]"),e.querySelectorAll(":checked").length||p.push(":checked"),(t=C.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&p.push(":enabled",":disabled"),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||p.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||p.push(":has"),p=p.length&&new RegExp(p.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===C||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),C}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),T&&!h[t+" "]&&(!p||!p.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,C,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=C&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=C&&V(e);var n=x.attrHandle[t.toLowerCase()],r=n&&ue.call(x.attrHandle,t.toLowerCase())?n(e,t,!T):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),pe.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(x=ce.expr={cacheLength:50,createPseudo:B,match:N,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(H,q),e[3]=(e[3]||e[4]||e[5]||"").replace(H,q),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return N.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&A.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(H,q).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(v," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(p,e,t,h,g){var v="nth"!==p.slice(0,3),y="last"!==p.slice(-4),m="of-type"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?"nextSibling":"previousSibling",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,d=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u="only"===p&&!s&&"nextSibling"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){d=(a=(r=(i=l[k]||(l[k]={}))[p]||[])[0]===S&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(d=a=0)||s.pop())if(1===o.nodeType&&++d&&o===e){i[p]=[S,a,d];break}}else if(f&&(d=a=(r=(i=e[k]||(e[k]={}))[p]||[])[0]===S&&r[1]),!1===d)while(o=++a&&o&&o[u]||(d=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++d&&(f&&((i=o[k]||(o[k]={}))[p]=[S,d]),o===e))break;return(d-=g)===h||d%h==0&&0<=d/h}}},PSEUDO:function(e,o){var t,a=x.pseudos[e]||x.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],x.setFilters.hasOwnProperty(e.toLowerCase())?B(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:B(function(e){var r=[],i=[],s=ne(e.replace(ve,"$1"));return s[k]?B(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:B(function(t){return function(e){return 0<I(t,e).length}}),contains:B(function(t){return t=t.replace(H,q),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:B(function(n){return D.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(H,q).toLowerCase(),function(e){var t;do{if(t=T?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return C.activeElement}catch(e){}}()&&C.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:z(!1),disabled:z(!0),checked:function(e){return fe(e,"input")&&!!e.checked||fe(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!x.pseudos.empty(e)},header:function(e){return j.test(e.nodeName)},input:function(e){return L.test(e.nodeName)},button:function(e){return fe(e,"input")&&"button"===e.type||fe(e,"button")},text:function(e){var t;return fe(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:U(function(){return[0]}),last:U(function(e,t){return[t-1]}),eq:U(function(e,t,n){return[n<0?n+t:n]}),even:U(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:U(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:U(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:U(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=x.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})x.pseudos[e]=$(e);for(e in{submit:!0,reset:!0})x.pseudos[e]=_(e);function Q(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=x.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve," ")}),a=a.slice(n.length)),x.filter)!(r=N[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function G(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function K(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&"parentNode"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[S,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[k]||(e[k]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===S&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function J(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(p,h,g,v,y,e){return v&&!v[k]&&(v=ee(v)),y&&!y[k]&&(y=ee(y,e)),B(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),d=!p||!e&&h?f:Z(f,u,p,n,r);if(g?g(d,s=y||(e?p:c||v)?[]:t,n,r):s=d,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(d[l[o]]=a))}if(e){if(y||p){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(d[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):E.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=x.relative[e[0].type],a=o||x.relative[" "],s=o?1:0,u=K(function(e){return e===i},a,!0),l=K(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=x.relative[e[s].type])c=[K(J(c),t)];else{if((t=x.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(x.relative[e[n].type])break;return ee(1<s&&J(c),1<s&&G(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ve,"$1"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&G(e))}c.push(t)}return J(c)}function ne(e,t){var n,v,y,m,b,r,i=[],o=[],a=u[e+" "];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[k]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,b=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],d=w,p=e||b&&x.find.TAG("*",i),h=S+=null==d?1:Math.random()||.1,g=p.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=p[l]);l++){if(b&&o){a=0,t||o.ownerDocument==C||(V(o),n=!T);while(s=v[a++])if(s(o,t||C,n)){E.call(r,o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=de.call(r));f=Z(f)}E.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(S=h,w=d),c},m?B(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&T&&x.relative[o[1].type]){if(!(t=(x.find.ID(a.matches[0].replace(H,q),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=N.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],x.relative[s=a.type])break;if((u=x.find[s])&&(r=u(a.matches[0].replace(H,q),P.test(o[0].type)&&X(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&G(o)))return E.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!T,n,!t||P.test(e)&&X(t.parentNode)||t),n}Q.prototype=x.filters=x.pseudos,x.setFilters=new Q,le.sortStable=k.split("").sort(l).join("")===k,V(),le.sortDetached=F(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce.find=I,ce.expr[":"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.tokenize=Y,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var p=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},w=ce.expr.match.needsContext,C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&w.test(e)?ce(e):e||[],!1).length}});var E,k=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||E,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:k.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:m,!0)),C.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=m.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,E=ce(m);var S=/^(?:parents|prev(?:Until|All))/,A={children:!0,contents:!0,next:!0,prev:!0};function D(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&ce(e);if(!w.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return p(e,"parentNode")},parentsUntil:function(e,t,n){return p(e,"parentNode",n)},next:function(e){return D(e,"nextSibling")},prev:function(e){return D(e,"previousSibling")},nextAll:function(e){return p(e,"nextSibling")},prevAll:function(e){return p(e,"previousSibling")},nextUntil:function(e,t,n){return p(e,"nextSibling",n)},prevUntil:function(e,t,n){return p(e,"previousSibling",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,"template")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(A[r]||ce.uniqueSort(n),S.test(r)&&n.reverse()),this.pushStack(n)}});var N=/[^\x20\t\r\n\f]+/g;function L(e){return e}function j(e){throw e}function O(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},ce.each(e.match(N)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[["notify","progress",ce.Callbacks("memory"),ce.Callbacks("memory"),2],["resolve","done",ce.Callbacks("once memory"),ce.Callbacks("once memory"),0,"resolved"],["reject","fail",ce.Callbacks("once memory"),ce.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,L,s),l(u,o,j,s)):(u++,t.call(e,l(u,o,L,s),l(u,o,j,s),l(u,o,L,o.notifyWith))):(a!==L&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==j&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:L,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:L)),o[2][3].add(l(0,e,v(n)?n:j))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(O(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)O(i[t],a(t),o.reject);return o.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&P.test(e.name)&&ie.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var H=ce.Deferred();function q(){m.removeEventListener("DOMContentLoaded",q),ie.removeEventListener("load",q),ce.ready()}ce.fn.ready=function(e){return H.then(e)["catch"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||H.resolveWith(m,[ce])}}),ce.ready.then=H.then,"complete"===m.readyState||"loading"!==m.readyState&&!m.documentElement.doScroll?ie.setTimeout(ce.ready):(m.addEventListener("DOMContentLoaded",q),ie.addEventListener("load",q));var R=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)R(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},M=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function B(e){return e.replace(M,"ms-").replace(I,W)}var F=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function $(){this.expando=ce.expando+$.uid++}$.uid=1,$.prototype={cache:function(e){var t=e[this.expando];return t||(t={},F(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[B(t)]=n;else for(r in t)i[B(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][B(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(B):(t=B(t))in r?[t]:t.match(N)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new $,z=new $,U=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,X=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(X,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:U.test(i)?JSON.parse(i):i)}catch(e){}z.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return z.hasData(e)||_.hasData(e)},data:function(e,t,n){return z.access(e,t,n)},removeData:function(e,t){z.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=z.get(o),1===o.nodeType&&!_.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=B(r.slice(5)),V(o,r,i[r]));_.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){z.set(this,n)}):R(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=z.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){z.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){z.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks("once memory").add(function(){_.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=_.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Y=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),G=["Top","Right","Bottom","Left"],K=m.documentElement,J=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};K.getRootNode&&(J=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&J(e)&&"none"===ce.css(e,"display")};var te={};function ne(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=_.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=te[s])||(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),te[s]=u)))):"none"!==n&&(l[c]="none",_.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return ne(this,!0)},hide:function(){return ne(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var re,be,xe=/^(?:checkbox|radio)$/i,we=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;re=m.createDocumentFragment().appendChild(m.createElement("div")),(be=m.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),re.appendChild(be),le.checkClone=re.cloneNode(!0).cloneNode(!0).lastChild.checked,re.innerHTML="<textarea>x</textarea>",le.noCloneChecked=!!re.cloneNode(!0).lastChild.defaultValue,re.innerHTML="<option></option>",le.option=!!re.lastChild;var Te={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function Ee(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function ke(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],"globalEval",!t||_.get(t[n],"globalEval"))}Te.tbody=Te.tfoot=Te.colgroup=Te.caption=Te.thead,Te.th=Te.td,le.option||(Te.optgroup=Te.option=[1,"<select multiple='multiple'>","</select>"]);var Se=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p<h;p++)if((o=e[p])||0===o)if("object"===x(o))ce.merge(d,o.nodeType?[o]:o);else if(Se.test(o)){a=a||f.appendChild(t.createElement("div")),s=(we.exec(o)||["",""])[1].toLowerCase(),u=Te[s]||Te._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(d,a.childNodes),(a=f.firstChild).textContent=""}else d.push(t.createTextNode(o));f.textContent="",p=0;while(o=d[p++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=J(o),a=Ee(f.appendChild(o),"script"),l&&ke(a),n){c=0;while(o=a[c++])Ce.test(o.type||"")&&n.push(o)}return f}var De=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function Le(){return!1}function je(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)je(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Le;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function Oe(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=_.get(t);if(F(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(K,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(N)||[""]).length;while(l--)p=g=(s=De.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=ce.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=ce.event.special[p]||{},c=ce.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=u[p])||((d=u[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(p,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),ce.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(N)||[""]).length;while(l--)if(p=g=(s=De.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p){f=ce.event.special[p]||{},d=u[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,p,v.handle),delete u[p])}else for(p in u)ce.event.remove(e,p+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,"events")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return xe.test(t.type)&&t.click&&fe(t,"input")&&Oe(t,"click",!0),!1},trigger:function(e){var t=this||e;return xe.test(t.type)&&t.click&&fe(t,"input")&&Oe(t,"click"),!0},_default:function(e){var t=e.target;return xe.test(t.type)&&t.click&&fe(t,"input")&&_.get(t,"click")||fe(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:Le,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:Le,isPropagationStopped:Le,isImmediatePropagationStopped:Le,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:"focusin",blur:"focusout"},function(r,i){function o(e){if(m.documentMode){var t=_.get(this,"handle"),n=ce.event.fix(e);n.type="focusin"===e.type?"focus":"blur",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(Oe(this,r,!0),!m.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return Oe(this,r),!0},teardown:function(){var e;if(!m.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=m.documentMode?this:e,n=_.get(t,i);n||(m.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=m.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(m.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return je(this,e,t,n,r)},one:function(e,t,n,r){return je(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Le),this.each(function(){ce.event.remove(this,e,n,t)})}});var Pe=/<script|<style|<link/i,He=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Me(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Ie(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function We(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);z.hasData(e)&&(o=z.access(e),a=ce.extend({},o),z.set(t,a))}}function Be(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,d=f-1,p=r[0],h=v(p);if(h||1<f&&"string"==typeof p&&!le.checkClone&&He.test(p))return n.each(function(e){var t=n.eq(e);h&&(r[0]=p.call(this,e,t.html())),Be(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Ee(e,"script"),Me)).length;c<f;c++)u=e,c!==d&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Ee(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,Ie),c=0;c<s;c++)u=a[c],Ce.test(u.type||"")&&!_.access(u,"globalEval")&&ce.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(qe,""),u,l))}return n}function Fe(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Ee(r)),r.parentNode&&(n&&J(r)&&ke(Ee(r,"script")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=J(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Ee(c),r=0,i=(o=Ee(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&xe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Ee(e),a=a||Ee(c),r=0,i=o.length;r<i;r++)We(o[r],a[r]);else We(e,c);return 0<(a=Ee(c,"script")).length&&ke(a,!f&&Ee(e,"script")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if(F(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Fe(this,e,!0)},remove:function(e){return Fe(this,e)},text:function(e){return R(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Be(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Re(this,e).appendChild(e)})},prepend:function(){return Be(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Re(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Be(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Be(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Ee(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return R(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Pe.test(e)&&!Te[(we.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Ee(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Be(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Ee(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),_e=/^--/,ze=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},Ue=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Xe=new RegExp(G.join("|"),"i");function Ve(e,t,n){var r,i,o,a,s=_e.test(t),u=e.style;return(n=n||ze(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,"$1")||void 0),""!==a||J(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&$e.test(a)&&Xe.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function Qe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",K.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),K.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=m.createElement("div"),l=m.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",le.clearCloneStyle="content-box"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=m.createElement("table"),t=m.createElement("tr"),n=m.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="box-sizing:content-box;border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",K.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,K.removeChild(e)),a}}))}();var Ye=["Webkit","Moz","ms"],Ge=m.createElement("div").style,Ke={};function Je(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Ge?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ye.length;while(n--)if((e=Ye[n]+t)in Ge)return e}(e)||e)}var Ze,et,tt=/^(none|table(?!-c[ea]).+)/,nt={position:"absolute",visibility:"hidden",display:"block"},rt={letterSpacing:"0",fontWeight:"400"};function it(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function ot(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=ce.css(e,n+G[a],!0,i)),r?("content"===n&&(u-=ce.css(e,"padding"+G[a],!0,i)),"margin"!==n&&(u-=ce.css(e,"border"+G[a]+"Width",!0,i))):(u+=ce.css(e,"padding"+G[a],!0,i),"padding"!==n?u+=ce.css(e,"border"+G[a]+"Width",!0,i):s+=ce.css(e,"border"+G[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function at(e,t,n){var r=ze(e),i=(!le.boxSizingReliable()||n)&&"border-box"===ce.css(e,"boxSizing",!1,r),o=i,a=Ve(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===ce.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===ce.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+ot(e,t,n||(i?"border":"content"),o,r,a)+"px"}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ve(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=B(t),u=_e.test(t),l=e.style;if(u||(t=Je(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=function(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?"":"px"),c=e.nodeType&&(ce.cssNumber[t]||"px"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?"":"px")),le.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=B(t);return _e.test(t)||(t=Je(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ve(e,t,r)),"normal"===i&&t in rt&&(i=rt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!tt.test(ce.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?at(e,u,n):Ue(e,nt,function(){return at(e,u,n)})},set:function(e,t,n){var r,i=ze(e),o=!le.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===ce.css(e,"boxSizing",!1,i),s=n?ot(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-ot(e,u,"border",!1,i)-.5)),s&&(r=Y.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=ce.css(e,u)),it(0,t,s)}}}),ce.cssHooks.marginLeft=Qe(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ve(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.each({margin:"",padding:"",border:"Width"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+G[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(ce.cssHooks[i+o].set=it)}),ce.fn.extend({css:function(e,t){return R(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=ze(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},Ze=m.createElement("input"),et=m.createElement("select").appendChild(m.createElement("option")),Ze.type="checkbox",le.checkOn=""!==Ze.value,le.optSelected=et.selected,(Ze=m.createElement("input")).value="t",Ze.type="radio",le.radioValue="t"===Ze.value;var st,ut=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return R(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?st:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&"radio"===t&&fe(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(N);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),st={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ut[t]||ce.find.attr;ut[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ut[o],ut[o]=r,r=null!=a(e,t,n)?o:null,ut[o]=i),r}});var lt=/^(?:input|select|textarea|button)$/i,ct=/^(?:a|area)$/i;function ft(e){return(e.match(N)||[]).join(" ")}function dt(e){return e.getAttribute&&e.getAttribute("class")||""}function pt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(N)||[]}ce.fn.extend({prop:function(e,t){return R(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):lt.test(e.nodeName)||ct.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,dt(this)))}):(e=pt(t)).length?this.each(function(){if(r=dt(this),n=1===this.nodeType&&" "+ft(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=ft(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,dt(this)))}):arguments.length?(e=pt(t)).length?this.each(function(){if(r=dt(this),n=1===this.nodeType&&" "+ft(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=ft(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,dt(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=pt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=dt(this))&&_.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":_.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ft(dt(n))+" ").indexOf(t))return!0;return!1}});var ht=/\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?"":e+""})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(ht,""):null==e?"":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:ft(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,"optgroup"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),ce.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||ce.error("Invalid XML: "+(n?ce.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var gt=/^(?:focusinfocus|focusoutblur)$/,vt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,d=[n||m],p=ue.call(e,"type")?e.type:e,h=ue.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||m,3!==n.nodeType&&8!==n.nodeType&&!gt.test(p+ce.event.triggered)&&(-1<p.indexOf(".")&&(p=(h=p.split(".")).shift(),h.sort()),u=p.indexOf(":")<0&&"on"+p,(e=e[ce.expando]?e:new ce.Event(p,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[p]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||p,gt.test(s+p)||(o=o.parentNode);o;o=o.parentNode)d.push(o),a=o;a===(n.ownerDocument||m)&&d.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=d[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||p,(l=(_.get(o,"events")||Object.create(null))[e.type]&&_.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&F(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=p,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(d.pop(),t)||!F(n)||u&&v(n[p])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=p,e.isPropagationStopped()&&f.addEventListener(p,vt),n[p](),e.isPropagationStopped()&&f.removeEventListener(p,vt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var yt,mt=/\[\]$/,bt=/\r?\n/g,xt=/^(?:submit|button|image|reset|file)$/i,wt=/^(?:input|select|textarea|keygen)/i;function Ct(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||mt.test(n)?i(n,t):Ct(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==x(e))i(n,e);else for(t in e)Ct(n+"["+t+"]",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Ct(n,e[n],t,i);return r.join("&")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&wt.test(this.nodeName)&&!xt.test(e)&&(this.checked||!xe.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(bt,"\r\n")}}):{name:t.name,value:n.replace(bt,"\r\n")}}).get()}}),ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},le.createHTMLDocument=((yt=m.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===yt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=m.implementation.createHTMLDocument("")).createElement("base")).href=m.location.href,t.head.appendChild(r)):t=m),o=!n&&[],(i=C.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||K})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Qe(le.pixelPosition,function(e,t){if(t)return t=Ve(e,n),$e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Tt=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=B,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?"":(e+"").replace(Tt,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return ce});var Et=ie.jQuery,kt=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=kt),e&&ie.jQuery===ce&&(ie.jQuery=Et),ce},"undefined"==typeof e&&(ie.jQuery=ie.$=ce),ce}); diff --git a/organizers/index.html b/organizers/index.html index 8484d1d..3a9037c 100644 --- a/organizers/index.html +++ b/organizers/index.html @@ -1,14 +1,13 @@ -<!doctype html><html lang=en dir=ltr class=scroll-smooth data-default-appearance=light data-auto-appearance=true><head><meta charset=utf-8><meta http-equiv=content-language content="en"><meta name=viewport content="width=device-width,initial-scale=1"><meta http-equiv=x-ua-compatible content="ie=edge"><title>· SRE MUC - - +· SRE MUC + -

·60 words·1 min· -

Organizers #

Looking for a way to contact us? Write us an email: muc@sre.xyz

Active Organizers #

Ingo Averdunk #

Kordian Bruck #

Christian Rebischke #

Alumni #

Pavlos Ratis #

Dan Luedtke #

Blog: https://danrl.com/

SRE Meetup Munich
Author
SRE Meetup Munich
\ No newline at end of file +

·60 words·1 min· +
SRE Meetup Munich
Author
SRE Meetup Munich
Table of Contents
\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 46e70f1..71307a6 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://muc.sre.xyz/events/2024-03-19T12:44:21+00:00daily0.5https://muc.sre.xyz/2024-03-19T12:44:21+00:00daily0.5https://muc.sre.xyz/events/sre-munich-spring-event-2024/2024-03-19T12:44:21+00:00daily0.5https://muc.sre.xyz/events/sre-munich-winter-event-2024/2024-02-07T07:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-summer-fall-event-2023/2023-09-07T18:01:53+00:00daily0.5https://muc.sre.xyz/events/sre-munich-spring-event-2023/2023-05-23T16:41:03+02:00daily0.5https://muc.sre.xyz/events/sre-munich-winter-event-2023/2023-02-13T07:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-fall-event-2022/2022-10-13T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-spring-online-event-2021/2021-05-17T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-fall-online-event-2020/2020-09-24T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-spring-online-event-2020/2020-04-23T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-winter-event-2020/2020-02-05T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-autumn-event-2019/2019-11-28T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-summer-event-2019/2019-06-27T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-nikolaus-winter-event-2018/2018-12-06T19:00:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-summer-event-2018/2018-09-25T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-launch-event-2018/2018-05-03T06:30:00+02:00daily0.5https://muc.sre.xyz/organizers/0https://muc.sre.xyz/authors/daily0.5https://muc.sre.xyz/categories/daily0.5https://muc.sre.xyz/tags/daily0.5 \ No newline at end of file +https://muc.sre.xyz/events/2024-07-07T07:30:00+02:00daily0.5https://muc.sre.xyz/2024-07-07T07:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-summer-event-2024/2024-07-07T07:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-spring-event-2024/2024-03-19T12:44:21+00:00daily0.5https://muc.sre.xyz/events/sre-munich-winter-event-2024/2024-02-07T07:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-summer-fall-event-2023/2023-09-07T18:01:53+00:00daily0.5https://muc.sre.xyz/events/sre-munich-spring-event-2023/2023-05-23T16:41:03+02:00daily0.5https://muc.sre.xyz/events/sre-munich-winter-event-2023/2023-02-13T07:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-fall-event-2022/2022-10-13T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-spring-online-event-2021/2021-05-17T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-fall-online-event-2020/2020-09-24T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-spring-online-event-2020/2020-04-23T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-winter-event-2020/2020-02-05T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-autumn-event-2019/2019-11-28T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-summer-event-2019/2019-06-27T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-nikolaus-winter-event-2018/2018-12-06T19:00:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-summer-event-2018/2018-09-25T18:30:00+02:00daily0.5https://muc.sre.xyz/events/sre-munich-launch-event-2018/2018-05-03T06:30:00+02:00daily0.5https://muc.sre.xyz/organizers/0https://muc.sre.xyz/authors/daily0.5https://muc.sre.xyz/categories/daily0.5https://muc.sre.xyz/tags/daily0.5 \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index 107e273..3852b7a 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,13 +1,10 @@ -Tags · SRE MUC - - +Tags · SRE MUC + -

Tags

\ No newline at end of file +

Tags

\ No newline at end of file