{"id":144173,"date":"2026-07-27T14:21:52","date_gmt":"2026-07-27T13:21:52","guid":{"rendered":"https:\/\/bonza-retheme.blz.au\/30-tage-tracker-zur-darmregeneration\/"},"modified":"2026-07-31T09:53:02","modified_gmt":"2026-07-31T08:53:02","slug":"30-tage-tracker-zur-darmregeneration","status":"publish","type":"page","link":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/","title":{"rendered":"30-Tage-Tracker zur Darmregeneration"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"h-30-day-gut-reset-tracker\">30-Tage-Tracker zur Darmregeneration<\/h2>\n\n<p class=\"wp-block-paragraph\">Zeigt die von Ihnen vorgenommene \u00c4nderung tats\u00e4chlich Wirkung? Drei\u00dfig Tage sind lang genug, damit der Darm eines Hundes darauf reagiert, und viel zu lang, um sich alles genau im Kopf zu merken. Dieser <strong>30-Tage-Tracker zur Darmregeneration<\/strong> macht das Regenerationsprotokoll aus <em>dem \u201eThe Dog Owner\u2019s Complete Gut Health Guide\u201c<\/em> f\u00fcr Sie sichtbar: Tragen Sie t\u00e4glich vier schnelle Anzeichen ein \u2013 Stuhlgang, Energie, Appetit und ob es zu einem Schub gekommen ist \u2013 und der Tracker zeigt Ihnen, ob die guten Tage Ihres Hundes zunehmen. Es dauert etwa zwanzig Sekunden pro Tag, und Ihr erster echter Trend zeichnet sich bereits am siebten Tag ab. Es handelt sich um ein informatives Tracking-Tool, das Ihnen hilft, Muster zu erkennen und zu entscheiden, wie Sie weiter vorgehen sollen \u2013 nicht um eine Diagnose.    <\/p>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<div class=\"bonza-grt\" id=\"bonzaGrt\" data-build=\"20260728-414d5b\">\n<style>\n.bonza-grt{\n  --cream:#f8ede3;\n  --paper:#ffffff;\n  --green:#2fa066;\n  --green-deep:#227a4d;\n  --tint:#eaf5ee;\n  --purple:#6e5d84;\n  --deep-purple:#574869;\n  --amber:#ffa825;\n  --amber-deep:#b06a00;\n  --caution-bg:#fff5e6;\n  --divider:#d4bfb2;\n  --field:#c3ad9b;\n  --ink:#382f2b;\n  --muted:#7a6d64;\n  --alert:#c25239;\n  \/* Bonza red, the primary CTA. Distinct from --alert, which stays reserved for\n     the vet gate and form errors. --cta-deep is the hover shade. *\/\n  --cta:#ff6256;\n  --cta-deep:#e6584d;\n  --alert-bg:#fbeeea;\n  --alert-bd:#eecabf;\n  --track:#e6d8ca;\n  background:var(--cream);\n  border:1px solid var(--divider);\n  border-radius:14px;\n  padding:28px 22px;\n  color:var(--ink);\n  font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n  font-size:15.5px;\n  line-height:1.5;\n  max-width:720px;\n  margin:0 auto;\n  box-sizing:border-box;\n}\n.bonza-grt *,.bonza-grt *:before,.bonza-grt *:after{box-sizing:border-box}\n.bonza-grt p{font-family:inherit}\n\n.bonza-grt h3.grt-eyebrow{\n  margin:0 0 10px !important;\n  padding:0 !important;\n  font-family:inherit !important;\n  font-size:19px !important;\n  font-weight:800 !important;\n  letter-spacing:.02em !important;\n  text-transform:none !important;\n  color:var(--purple) !important;\n  line-height:1.25 !important;\n}\n.bonza-grt .grt-lede{font-size:16px;font-weight:400;color:var(--muted);margin:0 0 20px}\n\n.bonza-grt button::before,\n.bonza-grt button:not(.grt-tab)::after{content:none !important;display:none !important}\n\/* Tabs swap between 500 and 800 on hover and selection. A hidden bold copy of the\n   label reserves the wider bold width, so the row does not jog sideways as the\n   weight changes. data-label on each tab feeds it. *\/\n.bonza-grt .grt-tab::after{\n  content:attr(data-label) !important;\n  display:block !important;\n  height:0 !important;\n  overflow:hidden !important;\n  visibility:hidden !important;\n  font-weight:800 !important;\n  white-space:nowrap !important;\n  pointer-events:none !important;\n}\n\n\/* Theme armour. The site theme styles bare <button> elements with its own display\n   font, uppercase transform, larger size and display:flex. Left unforced, that\n   reflows the grade tiles sideways, uppercases every label and inverts the tab\n   states. Everything a theme is likely to set is declared here and forced. *\/\n.bonza-grt button{\n  display:block !important;\n  font-family:inherit !important;\n  font-size:15px !important;\n  font-weight:700 !important;\n  line-height:1.35 !important;\n  letter-spacing:normal !important;\n  text-transform:none !important;\n  text-decoration:none !important;\n  white-space:normal !important;\n  background-image:none !important;\n  box-shadow:none !important;\n  text-shadow:none !important;\n  min-height:0 !important;\n  min-width:0 !important;\n  cursor:pointer;\n  border-radius:10px;\n  transition:background-color .12s ease,border-color .12s ease,color .12s ease;\n}\n.bonza-grt button > *{max-width:100%}\n.bonza-grt button:focus-visible{outline:2px solid var(--green-deep);outline-offset:2px}\n\n.bonza-grt input[type=\"text\"],\n.bonza-grt input[type=\"email\"],\n.bonza-grt input[type=\"number\"],\n.bonza-grt select{\n  background:var(--paper) !important;\n  background-color:var(--paper) !important;\n  border:1.5px solid var(--field) !important;\n  border-radius:10px !important;\n  color:var(--ink) !important;\n  font-family:inherit !important;\n  font-size:16px !important;\n  padding:11px 12px !important;\n  width:100%;\n  -webkit-appearance:none;\n  appearance:none;\n}\n.bonza-grt select{\n  background-image:url(\"data:image\/svg+xml;charset=utf-8,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%237a6d64' d='M1 1l5 5 5-5'\/%3E%3C\/svg%3E\") !important;\n  background-repeat:no-repeat !important;\n  background-position:right 12px center !important;\n  padding-right:34px;\n}\n.bonza-grt input:focus,.bonza-grt select:focus{\n  border-color:var(--green) !important;\n  outline:none;\n  box-shadow:0 0 0 3px rgba(47,160,102,.15);\n}\n.bonza-grt label{font-size:14px;font-weight:700;display:block;margin:0 0 6px;color:var(--ink)}\n\n.bonza-grt .grt-view[hidden]{display:none !important}\n\n\/* --- daily log rows --- *\/\n\/* Deliberate exception to the suite pattern: the other Bonza tools give each step\n   its own card and numbered badge, which suits a one-shot assessment you complete\n   once. This tool is opened every day for thirty days, so the log state is a single\n   card of lightly divided rows - a quick check-in rather than a form. The richer\n   per-card treatment is kept for the progress state, where it belongs. *\/\n.bonza-grt .grt-logcard{background:var(--paper);border:1px solid var(--divider);border-radius:12px;box-shadow:0 1px 2px rgba(56,47,43,.06),0 6px 20px rgba(56,47,43,.07);padding:18px;margin:0 0 20px}\n.bonza-grt .grt-q{padding:0 0 18px;margin:0 0 18px;border-bottom:1px solid var(--divider)}\n.bonza-grt .grt-q:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}\n.bonza-grt .grt-qlabel{font-size:17px !important;font-weight:800 !important;color:var(--green-deep) !important;margin:0 0 3px !important;line-height:1.3 !important}\n.bonza-grt .grt-qhint{font-size:14px !important;font-weight:500 !important;color:var(--muted) !important;margin:0 0 10px !important}\n\n\/* --- option buttons --- *\/\n.bonza-grt .grt-opt{\n  background:var(--paper);\n  border:1.5px solid var(--divider);\n  color:var(--ink);\n  font-size:15px !important;\n  font-weight:900 !important;\n  padding:11px 14px !important;\n  text-align:left;\n  width:100% !important;\n  display:block !important;\n}\n.bonza-grt .grt-opt:hover{border-color:var(--green);color:var(--green-deep)}\n.bonza-grt .grt-opt.is-sel,\n.bonza-grt .grt-opt.is-sel:hover,\n.bonza-grt .grt-opt.is-sel:focus,\n.bonza-grt .grt-opt.is-sel:active,\n.bonza-grt .grt-opt.is-sel:focus-visible{\n  background:var(--tint) !important;\n  background-color:var(--tint) !important;\n  border-color:var(--green) !important;\n  color:var(--green-deep) !important;\n}\n.bonza-grt .grt-opt:focus,.bonza-grt .grt-opt:active{\n  background:var(--paper);\n  background-color:var(--paper);\n}\n\n\/* --- primary \/ ghost --- *\/\n.bonza-grt .grt-btn{\n  background:var(--cta) !important;\n  background-color:var(--cta) !important;\n  border:1.5px solid var(--cta) !important;\n  color:var(--paper) !important;\n  font-size:16px !important;\n  font-weight:900 !important;\n  letter-spacing:.01em !important;\n  border-radius:12px !important;\n  min-height:52px !important;\n  padding:14px 20px !important;\n  width:100% !important;\n}\n.bonza-grt .grt-btn:hover,\n.bonza-grt .grt-btn:focus,\n.bonza-grt .grt-btn:active{\n  background:var(--cta-deep) !important;\n  background-color:var(--cta-deep) !important;\n  border-color:var(--cta-deep) !important;\n  color:var(--paper) !important;\n}\n.bonza-grt .grt-btn[disabled]{opacity:.45;cursor:not-allowed}\n.bonza-grt .grt-btn-ghost{\n  background:var(--paper);\n  border:1.5px solid var(--divider);\n  color:var(--ink);\n  font-size:13.5px !important;\n  font-weight:700 !important;\n  padding:9px 14px !important;\n  width:auto !important;\n  display:inline-block !important;\n}\n.bonza-grt .grt-btn-ghost:hover{border-color:var(--green);color:var(--green-deep)}\n\n\/* --- gate --- *\/\n.bonza-grt .grt-gate-card{background:var(--paper);border:1px solid var(--divider);border-radius:12px;box-shadow:0 1px 2px rgba(56,47,43,.06),0 6px 20px rgba(56,47,43,.07);padding:22px 18px}\n.bonza-grt .grt-gate-card h4{font-size:17px;font-weight:800;margin:0 0 8px;color:var(--green-deep)}\n.bonza-grt .grt-gate-card p{font-size:15.5px;margin:0 0 16px;color:var(--ink)}\n.bonza-grt .grt-field{margin-bottom:14px}\n.bonza-grt .grt-consent{font-size:12.5px;line-height:1.5;color:var(--muted);margin:0 0 14px}\n.bonza-grt .grt-consent a{color:var(--green-deep);text-decoration:underline}\n.bonza-grt .grt-reassure{font-size:12.5px;color:var(--muted);text-align:center;margin:12px 0 0}\n.bonza-grt .grt-err{font-size:13.5px;font-weight:700;color:var(--alert);margin:0 0 12px}\n.bonza-grt .grt-err[hidden]{display:none !important}\n\n\/* --- tabs --- *\/\n\/* The theme paints a background on bare buttons, which previously landed on the\n   INACTIVE tab and read as if it were the selected one. Every background here is\n   forced transparent; the active tab is signalled three ways - green text, heavier\n   weight, and the underline sitting on the container's own bottom rule. *\/\n.bonza-grt .grt-tabs{display:flex;flex-wrap:wrap;margin:0 0 20px;border-bottom:2px solid var(--divider)}\n.bonza-grt .grt-tab,\n.bonza-grt .grt-tab:hover,\n.bonza-grt .grt-tab:focus,\n.bonza-grt .grt-tab:active{\n  background:transparent !important;\n  background-color:transparent !important;\n  background-image:none !important;\n  border:0 !important;\n  border-bottom:3px solid transparent !important;\n  border-radius:0 !important;\n  box-shadow:none !important;\n  font-size:15px !important;\n  font-weight:500 !important;\n  padding:10px 2px 11px !important;\n  margin:0 26px -2px 0 !important;\n  width:auto !important;\n  flex:0 0 auto;\n  white-space:nowrap !important;\n  color:var(--muted) !important;\n}\n.bonza-grt .grt-tab:hover,\n.bonza-grt .grt-tab:focus-visible{\n  color:var(--ink) !important;\n  font-weight:800 !important;\n  border-bottom-color:var(--divider) !important;\n}\n.bonza-grt .grt-tab.is-sel,\n.bonza-grt .grt-tab.is-sel:hover,\n.bonza-grt .grt-tab.is-sel:focus,\n.bonza-grt .grt-tab.is-sel:active,\n.bonza-grt .grt-tab.is-sel:focus-visible{\n  color:var(--green-deep) !important;\n  font-weight:800 !important;\n  border-bottom-color:var(--green) !important;\n  background:transparent !important;\n  background-color:transparent !important;\n}\n\/* Weight is the load-bearing signal here, so unselected sits at 500 and selected\n   at 800. An 800 vs 700 pair renders identically in families that ship only one\n   bold face, which is what made both tabs look the same weight at rest. *\/\n\n\/* --- log --- *\/\n.bonza-grt .grt-daybar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 20px;flex-wrap:wrap}\n.bonza-grt .grt-daymeta{font-size:13px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}\n.bonza-grt .grt-daybar select{width:auto !important;min-width:190px;font-size:14px !important;padding:8px 34px 8px 12px !important}\n.bonza-grt .grt-row3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}\n.bonza-grt .grt-row3 .grt-opt{text-align:center !important}\n.bonza-grt .grt-row2{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}\n.bonza-grt .grt-row2 .grt-opt{text-align:center !important}\n\n.bonza-grt .grt-grades{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}\n.bonza-grt .grt-grade{\n  display:block !important;\n  padding:8px !important;\n  text-align:center !important;\n  line-height:1.25 !important;\n  min-width:0;\n  overflow:hidden;\n}\n.bonza-grt .grt-grade img{\n  display:block !important;\n  width:100% !important;\n  height:auto !important;\n  border-radius:8px;\n  margin:0 0 6px !important;\n  background:var(--cream);\n}\n.bonza-grt .grt-grade .grt-gnum{\n  display:block !important;\n  width:100% !important;\n  font-size:17px !important;\n  font-weight:800 !important;\n  line-height:1.2 !important;\n}\n.bonza-grt .grt-grade .grt-glab{\n  display:block !important;\n  width:100% !important;\n  font-size:12.5px !important;\n  font-weight:700 !important;\n  line-height:1.3 !important;\n  color:var(--ink);\n  overflow-wrap:break-word;\n  hyphens:auto;\n}\n.bonza-grt .grt-grade.is-sel .grt-glab{color:var(--green-deep) !important}\n.bonza-grt .grt-i18n,\n.bonza-grt .grt-gdesc{display:none !important}\n.bonza-grt .grt-gradedesc{font-size:14px !important;font-weight:500 !important;color:var(--muted) !important;margin:10px 0 0;min-height:20px}\n\n.bonza-grt .grt-checks{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}\n.bonza-grt .grt-refrow{margin-top:8px}\n.bonza-grt .grt-check{font-size:14px !important;font-weight:900 !important;padding:10px 12px !important;text-align:left !important}\n.bonza-grt .grt-check.is-sel,\n.bonza-grt .grt-check.is-sel:hover,\n.bonza-grt .grt-check.is-sel:focus,\n.bonza-grt .grt-check.is-sel:active{\n  background:var(--caution-bg) !important;\n  background-color:var(--caution-bg) !important;\n  border-color:var(--amber) !important;\n  color:var(--amber-deep) !important;\n}\n.bonza-grt .grt-weight{display:flex;flex-wrap:wrap;gap:10px;align-items:center}\n.bonza-grt .grt-weight input{max-width:120px}\n.bonza-grt .grt-weight span{font-size:14px;color:var(--muted)}\n\n\/* --- progress --- *\/\n.bonza-grt .grt-hero{background:var(--paper);border:1px solid var(--divider);border-radius:12px;box-shadow:0 1px 2px rgba(56,47,43,.06),0 6px 20px rgba(56,47,43,.07);padding:20px 18px;margin:0 0 20px}\n.bonza-grt .grt-hero-eyebrow{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 8px}\n.bonza-grt .grt-hero-num{font-size:56px;font-weight:800;line-height:1;color:var(--green-deep);margin:0}\n.bonza-grt .grt-hero-unit{font-size:26px;font-weight:800}\n.bonza-grt .grt-hero-lab{font-size:21px;font-weight:800;color:var(--ink);margin:6px 0 0;line-height:1.25}\n.bonza-grt .grt-hero-cmp{font-size:15.5px;margin:10px 0 0;color:var(--ink)}\n.bonza-grt .grt-delta{font-weight:800}\n.bonza-grt .grt-delta.up{color:var(--green-deep)}\n.bonza-grt .grt-delta.down{color:var(--alert)}\n.bonza-grt .grt-delta.flat{color:var(--muted)}\n.bonza-grt .grt-hero-note{font-size:12.5px;color:var(--muted);margin:10px 0 0}\n.bonza-grt .grt-toggle{display:inline-flex;flex-wrap:wrap;max-width:100%;border:1.5px solid var(--divider);border-radius:999px;overflow:hidden;margin:14px 0 0;background:var(--paper)}\n.bonza-grt .grt-toggle button{\n  border:none;border-radius:0;background:transparent;color:var(--muted);\n  font-size:13px !important;font-weight:700 !important;padding:8px 14px !important;\n  width:auto !important;display:inline-block !important;\n}\n.bonza-grt .grt-toggle button.is-sel,\n.bonza-grt .grt-toggle button.is-sel:hover,\n.bonza-grt .grt-toggle button.is-sel:focus,\n.bonza-grt .grt-toggle button.is-sel:active{\n  background:var(--tint) !important;\n  background-color:var(--tint) !important;\n  color:var(--green-deep) !important;\n}\n\n.bonza-grt .grt-ringwrap{background:var(--paper);border:1px solid var(--divider);border-radius:12px;box-shadow:0 1px 2px rgba(56,47,43,.06),0 6px 20px rgba(56,47,43,.07);display:flex;align-items:center;gap:18px;padding:18px;margin:0 0 20px}\n.bonza-grt .grt-ring{flex:0 0 92px;width:92px;height:92px}\n.bonza-grt .grt-ringtext .grt-rt1{font-size:17px;font-weight:800;color:var(--green-deep);margin:0}\n.bonza-grt .grt-ringtext .grt-rt2{font-size:14px;color:var(--muted);margin:4px 0 0}\n\n.bonza-grt .grt-upgrade{background:var(--paper);border:1px solid var(--divider);border-radius:12px;box-shadow:0 1px 2px rgba(56,47,43,.06),0 6px 20px rgba(56,47,43,.07);border-left:4px solid var(--purple);padding:18px;margin:0 0 20px;position:relative}\n.bonza-grt .grt-upgrade h5{font-size:17px;font-weight:800;margin:0 0 6px;color:var(--deep-purple)}\n.bonza-grt .grt-upgrade p{font-size:15.5px;margin:0;color:var(--ink);padding-right:18px}\n.bonza-grt .grt-upgrade .grt-dismiss{position:absolute;top:10px;right:10px;background:transparent !important;border:none !important;color:var(--muted) !important;font-size:18px !important;line-height:1 !important;padding:4px 8px !important;width:auto !important;font-weight:700 !important}\n\n.bonza-grt .grt-vet{\n  background:var(--alert-bg);\n  border:1px solid var(--alert-bd);\n  border-left:4px solid var(--alert);\n  border-radius:12px;padding:18px;margin:0 0 20px;\n}\n.bonza-grt .grt-vet h5{font-size:21px;font-weight:800;margin:0 0 6px;color:var(--alert);line-height:1.25}\n.bonza-grt .grt-vet p{font-size:15.5px;margin:0 0 8px;color:var(--ink)}\n.bonza-grt .grt-vet ul{margin:0;padding-left:20px;font-size:15.5px;color:var(--ink)}\n\n.bonza-grt .grt-card{background:var(--paper);border:1px solid var(--divider);border-radius:12px;box-shadow:0 1px 2px rgba(56,47,43,.06),0 6px 20px rgba(56,47,43,.07);padding:18px;margin:0 0 20px}\n.bonza-grt .grt-card h5{font-size:17px;font-weight:800;margin:0 0 3px;color:var(--green-deep);line-height:1.3}\n.bonza-grt .grt-card .grt-cardhint{font-size:14px;font-weight:500;color:var(--muted);margin:0 0 12px}\n.bonza-grt .grt-chart{width:100%;height:auto;display:block;overflow:visible}\n.bonza-grt .grt-empty{font-size:14px;color:var(--muted);margin:0}\n\n.bonza-grt .grt-weeks{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}\n.bonza-grt .grt-week{background:var(--paper);border:1.5px solid var(--divider);border-radius:10px;padding:10px 8px;text-align:center}\n.bonza-grt .grt-week.is-now{border-color:var(--green);background:var(--tint)}\n.bonza-grt .grt-week .grt-wk{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);display:block}\n.bonza-grt .grt-week .grt-wt{font-size:12px;font-weight:600;color:var(--muted);display:block;margin-top:3px;line-height:1.25}\n\n.bonza-grt .grt-foot{border-top:1px solid var(--divider);margin-top:22px;padding-top:16px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}\n.bonza-grt .grt-foot .grt-footnote{font-size:12.5px;color:var(--muted);margin:0;flex:1 1 100%}\n.bonza-grt .grt-disclaimer{font-size:12.5px;color:var(--muted);margin:16px 0 0;line-height:1.5}\n.bonza-grt .grt-warn{\n  background:var(--caution-bg);\n  border:1px solid var(--divider);\n  border-left:4px solid var(--amber);\n  border-radius:10px;padding:12px 14px;font-size:14px;margin:0 0 16px;color:var(--ink);\n}\n.bonza-grt .grt-toast{background:var(--tint);border:1px solid var(--green);border-radius:10px;padding:12px 14px;font-size:14px;font-weight:700;color:var(--green-deep);margin:0 0 16px}\n.bonza-grt .grt-toast[hidden]{display:none !important}\n\n\/* ---------------------------------------------------------------------------\n   SPECIFICITY ESCALATION - font-weight only.\n\n   Diagnosed on the live page: computed font-weight on .grt-tab resolved to 400\n   despite the tool declaring 500\/800 with !important. The theme sets font-weight\n   on buttons with !important at a specificity .bonza-grt button cannot beat, so\n   every weight in the tool was being overruled while font-size, colour and\n   background came through untouched. The giveaway was the tab's ::after (the\n   hidden bold label used for width reservation) rendering in Segoe UI Black\n   while the button itself rendered regular - the pseudo-element kept its weight\n   because the theme rule does not target it.\n\n   These selectors lead with the wrapper's ID, which outranks any class-based\n   rule no matter how many classes it chains. Weight is the only property\n   escalated; everything else was already winning.\n   --------------------------------------------------------------------------- *\/\n#bonzaGrt.bonza-grt .grt-tab{font-weight:500 !important}\n#bonzaGrt.bonza-grt .grt-tab:hover,\n#bonzaGrt.bonza-grt .grt-tab:focus-visible{font-weight:800 !important}\n#bonzaGrt.bonza-grt .grt-tab.is-sel,\n#bonzaGrt.bonza-grt .grt-tab.is-sel:hover,\n#bonzaGrt.bonza-grt .grt-tab.is-sel:focus,\n#bonzaGrt.bonza-grt .grt-tab.is-sel:active,\n#bonzaGrt.bonza-grt .grt-tab.is-sel:focus-visible{font-weight:800 !important}\n#bonzaGrt.bonza-grt .grt-tab::after{font-weight:800 !important}\n\n#bonzaGrt.bonza-grt .grt-opt,\n#bonzaGrt.bonza-grt .grt-opt:hover,\n#bonzaGrt.bonza-grt .grt-opt:focus,\n#bonzaGrt.bonza-grt .grt-opt:active,\n#bonzaGrt.bonza-grt .grt-opt.is-sel{font-weight:900 !important}\n#bonzaGrt.bonza-grt .grt-check,\n#bonzaGrt.bonza-grt .grt-check.is-sel{font-weight:900 !important}\n\n#bonzaGrt.bonza-grt .grt-btn,\n#bonzaGrt.bonza-grt .grt-btn:hover,\n#bonzaGrt.bonza-grt .grt-btn:focus,\n#bonzaGrt.bonza-grt .grt-btn:active{font-weight:900 !important}\n#bonzaGrt.bonza-grt .grt-btn-ghost{font-weight:700 !important}\n\n\/* Footer actions. The theme adds vertical margin to buttons, which knocked the\n   CSV button out of line with Start over. Zero the margins, and let the two\n   share a height so their top and bottom edges match exactly. *\/\n#bonzaGrt.bonza-grt .grt-foot{align-items:stretch !important}\n#bonzaGrt.bonza-grt .grt-foot .grt-btn-ghost{\n  margin:0 !important;\n  align-self:stretch !important;\n  display:inline-flex !important;\n  align-items:center !important;\n  justify-content:center !important;\n  line-height:1.25 !important;\n}\n\n#bonzaGrt.bonza-grt .grt-grade .grt-gnum{font-weight:800 !important}\n#bonzaGrt.bonza-grt .grt-grade .grt-glab{font-weight:700 !important}\n\n#bonzaGrt.bonza-grt .grt-toggle button{font-weight:700 !important}\n#bonzaGrt.bonza-grt .grt-toggle button.is-sel{font-weight:800 !important}\n\n#bonzaGrt.bonza-grt .grt-eyebrow{font-weight:800 !important}\n#bonzaGrt.bonza-grt .grt-qlabel{font-weight:800 !important}\n#bonzaGrt.bonza-grt .grt-qhint{font-weight:500 !important}\n#bonzaGrt.bonza-grt .grt-hero-num,\n#bonzaGrt.bonza-grt .grt-hero-lab,\n#bonzaGrt.bonza-grt .grt-delta{font-weight:800 !important}\n#bonzaGrt.bonza-grt .grt-card h5,\n#bonzaGrt.bonza-grt .grt-vet h5,\n#bonzaGrt.bonza-grt .grt-upgrade h5,\n#bonzaGrt.bonza-grt .grt-gate-card h4{font-weight:800 !important}\n#bonzaGrt.bonza-grt .grt-daymeta,\n#bonzaGrt.bonza-grt .grt-week .grt-wk{font-weight:800 !important}\n\n@media (max-width:560px){\n  .bonza-grt{padding:20px 15px}\n  .bonza-grt .grt-logcard,.bonza-grt .grt-card,.bonza-grt .grt-hero,.bonza-grt .grt-ringwrap,.bonza-grt .grt-upgrade,.bonza-grt .grt-vet{padding:15px}\n  .bonza-grt .grt-grades{grid-template-columns:repeat(3,1fr)}\n  .bonza-grt .grt-checks{grid-template-columns:1fr}\n  .bonza-grt .grt-refrow .grt-opt{grid-column:1 \/ -1}\n  .bonza-grt .grt-weeks{grid-template-columns:repeat(2,1fr)}\n  .bonza-grt .grt-hero-num{font-size:46px}\n  .bonza-grt .grt-ringwrap{flex-direction:column;align-items:flex-start;gap:12px}\n  .bonza-grt .grt-daybar select{min-width:0;width:100% !important}\n  .bonza-grt .grt-toggle{width:100%;justify-content:center}\n}\n@media (prefers-reduced-motion:reduce){\n  .bonza-grt *{transition:none !important;animation:none !important}\n}\n<\/style>\n\n<h3 class=\"grt-eyebrow\">Bonza Health Tools: 30-Tage-Tracker f\u00fcr die Darmregeneration<\/h3>\n<p class=\"grt-lede\">Das 30-Tage-Reset-Programm funktioniert, weil Sie die Wirkung mit eigenen Augen sehen k\u00f6nnen. Notieren Sie t\u00e4glich vier einfache Anzeichen \u2013 Stuhlgang, Energie, Appetit und ob es zu einem Schub gekommen ist \u2013 und beobachten Sie, ob die guten Tage Ihres Hundes zunehmen. Dies ist ein Instrument zur Aufzeichnung und Auswertung, keine Diagnose.  <\/p>\n\n<div class=\"grt-warn\" id=\"grtStorageWarn\" hidden=\"\"><\/div>\n\n<section class=\"grt-view\" id=\"grtGate\">\n  <div class=\"grt-gate-card\">\n    <h4>Beginnen Sie mit der Nachverfolgung der 30-t\u00e4gigen Darmregenerationskur Ihres Hundes<\/h4>\n    <p>Geben Sie Ihre E-Mail-Adresse ein, um Ihren kostenlosen Tracker zu \u00f6ffnen. So k\u00f6nnen Sie die Fortschritte Ihres Hundes t\u00e4glich festhalten und die Entwicklung \u00fcber einen Zeitraum von 30 Tagen verfolgen. <\/p>\n    <div class=\"grt-field\">\n      <label for=\"grtDogName\">Der Name Ihres Hundes (optional)<\/label>\n      <input type=\"text\" id=\"grtDogName\" autocomplete=\"off\" placeholder=\"Paddy\"\/>\n    <\/div>\n    <div class=\"grt-field\">\n      <label for=\"grtEmail\">Ihre E-Mail-Adresse<\/label>\n      <input type=\"email\" id=\"grtEmail\" autocomplete=\"email\" inputmode=\"email\" placeholder=\"you@example.com\"\/>\n    <\/div>\n    <p class=\"grt-err\" id=\"grtGateErr\" hidden=\"\"><\/p>\n    <p class=\"grt-consent\">Wenn Sie fortfahren, erkl\u00e4ren Sie sich damit einverstanden, E-Mails von Bonza zu Ihrem \u201eGut Reset\u201c-Tracker und zu Tipps zur Darmgesundheit Ihres Hundes zu erhalten. Sie k\u00f6nnen sich jederzeit abmelden. Wir behandeln Ihre Daten gem\u00e4\u00df unserer <a href=\"https:\/\/bonza-retheme.blz.au\/de\/datenschutzbestimmungen\/\" target=\"_blank\" rel=\"noopener\">Datenschutzerkl\u00e4rung<\/a>.  <\/p>\n    <button type=\"button\" class=\"grt-btn\" id=\"grtGateBtn\">Meinen Tracker \u00f6ffnen<\/button>\n    <p class=\"grt-reassure\">Die Nutzung ist kostenlos, ein Konto ist nicht erforderlich. Ihre Tracking-Daten verbleiben auf diesem Ger\u00e4t. <\/p>\n  <\/div>\n<\/section>\n\n<section class=\"grt-view\" id=\"grtApp\" hidden=\"\">\n\n  <div class=\"grt-i18n\" id=\"grtI18n\" aria-hidden=\"true\">\n    <span data-w=\"1\">Pr\u00fcfen und entfernen<\/span>\n    <span data-w=\"2\">Unterst\u00fctzung einf\u00fchren<\/span>\n    <span data-w=\"3\">Beobachten und anpassen<\/span>\n    <span data-w=\"4\">Grundlage schaffen<\/span>\n    <span data-t=\"grade\">Bewertung<\/span>\n  <\/div>\n\n  <div class=\"grt-tabs\" role=\"tablist\">\n    <button type=\"button\" class=\"grt-tab is-sel\" id=\"grtTabLog\" role=\"tab\" aria-selected=\"true\" data-label=\"Log today\">Tagesbericht<\/button>\n    <button type=\"button\" class=\"grt-tab\" id=\"grtTabProg\" role=\"tab\" aria-selected=\"false\" data-label=\"Progress\">Fortschritt<\/button>\n  <\/div>\n\n  <div class=\"grt-view\" id=\"grtLog\">\n    <div class=\"grt-toast\" id=\"grtToast\" hidden=\"\"><\/div>\n\n    <div class=\"grt-daybar\">\n      <div>\n        <div class=\"grt-daymeta\" id=\"grtDayMeta\">Tag 1 von 30 \u00b7 Woche 1<\/div>\n      <\/div>\n      <select id=\"grtDaySel\" aria-label=\"Which day are you logging?\"><\/select>\n    <\/div>\n\n    <div class=\"grt-logcard\">\n      <div class=\"grt-q\">\n        <p class=\"grt-qlabel\">Stuhl-Score<\/p>\n        <p class=\"grt-qhint\">W\u00e4hlen Sie auf der 7-Punkte-Skala von Bonza die am besten passende Bewertung aus. Die Stufen 2 und 3 liegen im gesunden Bereich. <\/p>\n        <div class=\"grt-grades\" id=\"grtGrades\">\n          <button type=\"button\" class=\"grt-opt grt-grade\" data-g=\"1\"><span class=\"grt-gnum\">1<\/span><span class=\"grt-glab\">Harte, trockene Klumpen<\/span><span class=\"grt-gdesc\">Einzelne trockene Klumpen, die nur unter Anstrengung ausgeschieden werden. Verstopfung \u2013 in der Regel ein Problem mit der Ballaststoffzufuhr oder der Fl\u00fcssigkeitszufuhr. <\/span><\/button>\n          <button type=\"button\" class=\"grt-opt grt-grade\" data-g=\"2\"><span class=\"grt-gnum\">2<\/span><span class=\"grt-glab\">Fest, segmentiert<\/span><span class=\"grt-gdesc\">Gut geformt und unterteilt, beh\u00e4lt seine Form bei und hinterl\u00e4sst keine R\u00fcckst\u00e4nde. Das ist ideal. <\/span><\/button>\n          <button type=\"button\" class=\"grt-opt grt-grade\" data-g=\"3\"><span class=\"grt-gnum\">3<\/span><span class=\"grt-glab\">Feuchter, geformter Holzscheit<\/span><span class=\"grt-gdesc\">Hat die Form eines Baumstamms und beh\u00e4lt diese bei, ist leicht feucht, hinterl\u00e4sst eine schwache Spur. Gesund. <\/span><\/button>\n          <button type=\"button\" class=\"grt-opt grt-grade\" data-g=\"4\"><span class=\"grt-gnum\">4<\/span><span class=\"grt-glab\">Weich, verliert an Form<\/span><span class=\"grt-gdesc\">Es hat zwar noch die Form eines Holzscheits, ist aber weich und feucht. Es verliert seine Form, wenn man es in die Hand nimmt. Das sollte man im Auge behalten.  <\/span><\/button>\n          <button type=\"button\" class=\"grt-opt grt-grade\" data-g=\"5\"><span class=\"grt-gnum\">5<\/span><span class=\"grt-glab\">Sehr weich, teilweise geformt<\/span><span class=\"grt-gdesc\">Liegt eher in einem teilweise geformten Haufen als in einem Baumstamm.<\/span><\/button>\n          <button type=\"button\" class=\"grt-opt grt-grade\" data-g=\"6\"><span class=\"grt-gnum\">6<\/span><span class=\"grt-glab\">Formloser, weicher Flor<\/span><span class=\"grt-gdesc\">Keine bestimmte Form, breiartig. Dies ist Durchfall. <\/span><\/button>\n          <button type=\"button\" class=\"grt-opt grt-grade\" data-g=\"7\"><span class=\"grt-gnum\">7<\/span><span class=\"grt-glab\">W\u00e4ssrig<\/span><span class=\"grt-gdesc\">Fl\u00fcssig, keine festen Bestandteile. W\u00e4ssriger Durchfall \u2013 achten Sie sorgf\u00e4ltig auf die Fl\u00fcssigkeitszufuhr. <\/span><\/button>\n        <\/div>\n        <p class=\"grt-gradedesc\" id=\"grtGradeDesc\"><\/p>\n      <\/div>\n\n      <div class=\"grt-q\">\n        <p class=\"grt-qlabel\">Energiepegel<\/p>\n        <p class=\"grt-qhint\">Im Vergleich zum Normalzustand Ihres Hundes.<\/p>\n        <div class=\"grt-row3\" id=\"grtEnergy\">\n          <button type=\"button\" class=\"grt-opt\" data-v=\"low\">Niedrig<\/button>\n          <button type=\"button\" class=\"grt-opt\" data-v=\"normal\">Normal<\/button>\n          <button type=\"button\" class=\"grt-opt\" data-v=\"high\">Hoch<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"grt-q\">\n        <p class=\"grt-qlabel\">Appetit<\/p>\n        <p class=\"grt-qhint\">Was sie heute gegessen haben.<\/p>\n        <div class=\"grt-row3\" id=\"grtAppetite\">\n          <button type=\"button\" class=\"grt-opt\" data-v=\"poor\">Schlecht<\/button>\n          <button type=\"button\" class=\"grt-opt\" data-v=\"normal\">Normal<\/button>\n          <button type=\"button\" class=\"grt-opt\" data-v=\"eager\">Eifrig<\/button>\n        <\/div>\n        <div class=\"grt-row3 grt-refrow\">\n          <button type=\"button\" class=\"grt-opt grt-check\" id=\"grtRefused\">Eine Mahlzeit verweigert<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"grt-q\">\n        <p class=\"grt-qlabel\">Ein Schub heute?<\/p>\n        <p class=\"grt-qhint\">Ein Tag mit Erbrechen, Stuhldrang, Pressen, Unf\u00e4llen oder offensichtlichen Darmbeschwerden.<\/p>\n        <div class=\"grt-row2\" id=\"grtFlare\">\n          <button type=\"button\" class=\"grt-opt\" data-v=\"no\">Kein Schub<\/button>\n          <button type=\"button\" class=\"grt-opt\" data-v=\"yes\">Heute ein Schub<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"grt-q\">\n        <p class=\"grt-qlabel\">Gibt es irgendetwas Ungew\u00f6hnliches im Stuhl?<\/p>\n        <p class=\"grt-qhint\">Kreuzen Sie alles an, was Sie gesehen haben. Lassen Sie das Feld leer, wenn nichts zutrifft. <\/p>\n        <div class=\"grt-checks\" id=\"grtFlags\">\n          <button type=\"button\" class=\"grt-opt grt-check\" data-k=\"black\">Schwarz oder teerartig<\/button>\n          <button type=\"button\" class=\"grt-opt grt-check\" data-k=\"blood\">Frisches Blut oder rote Streifen<\/button>\n          <button type=\"button\" class=\"grt-opt grt-check\" data-k=\"pale\">Blass, grau oder lehmfarben<\/button>\n          <button type=\"button\" class=\"grt-opt grt-check\" data-k=\"worms\">Sichtbare W\u00fcrmer oder reis\u00e4hnliche Segmente<\/button>\n          <button type=\"button\" class=\"grt-opt grt-check\" data-k=\"mucus\">Starker Schleim- oder geleeartiger Belag<\/button>\n          <button type=\"button\" class=\"grt-opt grt-check\" data-k=\"foreign\">Etwas, das sie nicht h\u00e4tten essen sollen<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"grt-q\">\n        <p class=\"grt-qlabel\">Gewicht <span style=\"font-weight:600;color:var(--muted)\">(optional)<\/span><\/p>\n        <p class=\"grt-qhint\">Einmal pro Woche reicht v\u00f6llig aus. Auf derselben Waage, zur gleichen Tageszeit. <\/p>\n        <div class=\"grt-weight\">\n          <input type=\"number\" id=\"grtWeight\" step=\"0.1\" min=\"0\" max=\"120\" inputmode=\"decimal\" placeholder=\"0.0\"\/>\n          <span>kg<\/span>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n    <button type=\"button\" class=\"grt-btn\" id=\"grtSave\">Merken Sie sich diesen Tag vor<\/button>\n\n    <div class=\"grt-foot\">\n      <p class=\"grt-footnote\">Ihre Protokolle werden ausschlie\u00dflich in diesem Browser auf diesem Ger\u00e4t gespeichert.<\/p>\n      <button type=\"button\" class=\"grt-btn-ghost\" id=\"grtExport\">Meine Daten herunterladen (CSV)<\/button>\n      <button type=\"button\" class=\"grt-btn-ghost\" id=\"grtReset\">Von vorne beginnen<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"grt-view\" id=\"grtProgress\" hidden=\"\">\n    <div id=\"grtVetSlot\"><\/div>\n    <div id=\"grtHeroSlot\"><\/div>\n    <div id=\"grtUpgradeSlot\"><\/div>\n    <div id=\"grtRingSlot\"><\/div>\n    <div id=\"grtWeeksSlot\" class=\"grt-card\"><\/div>\n    <div id=\"grtChartsSlot\"><\/div>\n    <p class=\"grt-disclaimer\">Dieser Tracker dient zu Informationszwecken. Er erfasst Ihre Beobachtungen und zeigt die Entwicklung im Zeitverlauf an. Er dient nicht der Diagnose und ersetzt nicht die Beratung durch einen Tierarzt. Sollte es Ihrem Hund nicht gut gehen, sich sein Zustand verschlechtern oder Sie besorgt sein, wenden Sie sich bitte an Ihren Tierarzt.   <\/p>\n  <\/div>\n\n<\/section>\n<\/div>\n<script src=\"data:text\/javascript;base64,KGZ1bmN0aW9uKCl7CiAgInVzZSBzdHJpY3QiOwoKICB2YXIgQ0ZHID0gewogICAgbnM6ICJib256YV9ncnRfdjEiLAogICAgcmVzZXREYXlzOiAzMCwKICAgIHNjcm9sbE9mZnNldDogMTAwLAogICAgcHJpdmFjeVVybDogImh0dHBzOi8vd3d3LmJvbnphLmRvZy9wcml2YWN5LXBvbGljeS8iLAogICAgZ3JhZGVJbWFnZXM6IFsKICAgICAgImh0dHBzOi8vd3d3LmJvbnphLmRvZy93cC1jb250ZW50L3VwbG9hZHMvZG9nLXBvb3AtY2hhcnQtZ3JhZGUtMS1oYXJkLWRyeS1sdW1wcy1jb25zdGlwYXRpb24ud2VicCIsCiAgICAgICJodHRwczovL3d3dy5ib256YS5kb2cvd3AtY29udGVudC91cGxvYWRzL2RvZy1wb29wLWNoYXJ0LWdyYWRlLTItZmlybS1zZWdtZW50ZWQtaGVhbHRoeS1pZGVhbC53ZWJwIiwKICAgICAgImh0dHBzOi8vd3d3LmJvbnphLmRvZy93cC1jb250ZW50L3VwbG9hZHMvZG9nLXBvb3AtY2hhcnQtZ3JhZGUtMy1tb2lzdC1mb3JtZWQtbG9nLWhlYWx0aHkud2VicCIsCiAgICAgICJodHRwczovL3d3dy5ib256YS5kb2cvd3AtY29udGVudC91cGxvYWRzL2RvZy1wb29wLWNoYXJ0LWdyYWRlLTQtc29mdC1tb2lzdC1sb3NpbmctZm9ybS53ZWJwIiwKICAgICAgImh0dHBzOi8vd3d3LmJvbnphLmRvZy93cC1jb250ZW50L3VwbG9hZHMvZG9nLXBvb3AtY2hhcnQtZ3JhZGUtNS12ZXJ5LXNvZnQtcGFydGx5LWZvcm1lZC1waWxlLndlYnAiLAogICAgICAiaHR0cHM6Ly93d3cuYm9uemEuZG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy9kb2ctcG9vcC1jaGFydC1ncmFkZS02LWZvcm1sZXNzLXNvZnQtcGlsZS1kaWFycmhvZWEud2VicCIsCiAgICAgICJodHRwczovL3d3dy5ib256YS5kb2cvd3AtY29udGVudC91cGxvYWRzL2RvZy1wb29wLWNoYXJ0LWdyYWRlLTctd2F0ZXJ5LWRpYXJyaG9lYS53ZWJwIgogICAgXSwKICAgIHVwZ3JhZGVVcmw6ICIiLAoKICAgIC8qIEtsYXZpeW8gbGVhZCBjYXB0dXJlLiBGaWxsIGJvdGggSURzIGluIGFuZCB0aGUgZ2F0ZSBzdGFydHMgc3Vic2NyaWJpbmc7CiAgICAgICBsZWF2ZSBlaXRoZXIgYmxhbmsgYW5kIHRoZSB0cmFja2VyIHJ1bnMgZXhhY3RseSBhcyBiZWZvcmUsIGNhcHR1cmluZyBub3RoaW5nLgogICAgICAgY29tcGFueUlkIGlzIHRoZSA2LWNoYXJhY3RlciBwdWJsaWMgQVBJIGtleSAoc2l0ZSBJRCkgLSBpdCBpcyBkZXNpZ25lZCB0byBiZQogICAgICAgcHVibGljIGFuZCBzYWZlIHRvIHNoaXAgaW4gY2xpZW50LXNpZGUgY29kZS4gRG8gTk9UIHB1dCBhIHByaXZhdGUga2V5IGhlcmUuICovCiAgICBrbGF2aXlvOiB7CiAgICAgIGNvbXBhbnlJZDogIlhSUjlFRCIsCiAgICAgIGxpc3RJZDogIlRTdzdiVCIsCiAgICAgIHJldmlzaW9uOiAiMjAyNi0wNy0xNSIsCiAgICAgIHNvdXJjZTogIjMwLURheSBHdXQgUmVzZXQgVHJhY2tlciIsCiAgICAgIHNlbmREb2dOYW1lOiB0cnVlLAogICAgICBtYXhUcmllczogNQogICAgfQogIH07CgogIHZhciBQQUwgPSB7CiAgICBwYXBlcjoiI2ZmZmZmZiIsIGdyZWVuOiIjMmZhMDY2IiwgZ3JlZW5EZWVwOiIjMjI3YTRkIiwgdGludDoiI2VhZjVlZSIsCiAgICBhbWJlcjoiI2ZmYTgyNSIsIGFtYmVyRGVlcDoiI2IwNmEwMCIsIGRpdmlkZXI6IiNkNGJmYjIiLCBpbms6IiMzODJmMmIiLAogICAgbXV0ZWQ6IiM3YTZkNjQiLCB0cmFjazoiI2U2ZDhjYSIKICB9OwoKICB2YXIgR1JBREVTID0gWwogICAge246MSxsYWI6IkhhcmQsIGRyeSBsdW1wcyIsZGVzYzoiU2VwYXJhdGUgZHJ5IGx1bXBzLCBwYXNzZWQgd2l0aCBlZmZvcnQuIENvbnN0aXBhdGlvbiBcdTIwMTQgdXN1YWxseSBhIGZpYnJlIG9yIGh5ZHJhdGlvbiBpc3N1ZS4ifSwKICAgIHtuOjIsbGFiOiJGaXJtLCBzZWdtZW50ZWQiLGRlc2M6IldlbGwgZm9ybWVkIGFuZCBzZWdtZW50ZWQsIGhvbGRzIGl0cyBzaGFwZSwgbGVhdmVzIG5vdGhpbmcgYmVoaW5kLiBUaGlzIGlzIGlkZWFsLiJ9LAogICAge246MyxsYWI6Ik1vaXN0LCBmb3JtZWQgbG9nIixkZXNjOiJMb2cgc2hhcGVkIGFuZCBob2xkcyBmb3JtLCBzbGlnaHRseSBtb2lzdCwgbGVhdmVzIGEgZmFpbnQgbWFyay4gSGVhbHRoeS4ifSwKICAgIHtuOjQsbGFiOiJTb2Z0LCBsb3NpbmcgZm9ybSIsZGVzYzoiU3RpbGwgbG9nIHNoYXBlZCBidXQgc29mdCBhbmQgbW9pc3QuIExvc2VzIGl0cyBzaGFwZSB3aGVuIHBpY2tlZCB1cC4gV29ydGggd2F0Y2hpbmcuIn0sCiAgICB7bjo1LGxhYjoiVmVyeSBzb2Z0LCBwYXJ0bHkgZm9ybWVkIixkZXNjOiJTaXRzIGluIGEgcGFydGx5IGZvcm1lZCBwaWxlIHJhdGhlciB0aGFuIGEgbG9nLiJ9LAogICAge246NixsYWI6IkZvcm1sZXNzIHNvZnQgcGlsZSIsZGVzYzoiTm8gZGVmaW5lZCBzaGFwZSwgcG9ycmlkZ2UtbGlrZS4gVGhpcyBpcyBkaWFycmhvZWEuIn0sCiAgICB7bjo3LGxhYjoiV2F0ZXJ5IixkZXNjOiJMaXF1aWQsIG5vIHNvbGlkIHBpZWNlcy4gV2F0ZXJ5IGRpYXJyaG9lYSBcdTIwMTQgd2F0Y2ggaHlkcmF0aW9uIGNsb3NlbHkuIn0KICBdOwogIHZhciBIRUFMVEhZID0gWzIsM107CgogIHZhciBFTkVSR1kgICA9IFt7djoibG93IixsYWI6IkxvdyJ9LHt2OiJub3JtYWwiLGxhYjoiTm9ybWFsIn0se3Y6ImhpZ2giLGxhYjoiSGlnaCJ9XTsKICB2YXIgQVBQRVRJVEUgPSBbe3Y6InBvb3IiLGxhYjoiUG9vciJ9LHt2OiJub3JtYWwiLGxhYjoiTm9ybWFsIn0se3Y6ImVhZ2VyIixsYWI6IkVhZ2VyIn1dOwogIHZhciBGTEFSRSAgICA9IFt7djoibm8iLGxhYjoiTm8gZmxhcmUtdXAifSx7djoieWVzIixsYWI6IkZsYXJlLXVwIHRvZGF5In1dOwoKICB2YXIgRkxBR1MgPSBbCiAgICB7azoiYmxhY2siLCBsYWI6IkJsYWNrIG9yIHRhci1saWtlIn0sCiAgICB7azoiYmxvb2QiLCBsYWI6IkZyZXNoIGJsb29kIG9yIHJlZCBzdHJlYWtzIn0sCiAgICB7azoicGFsZSIsICBsYWI6IlBhbGUsIGdyZXkgb3IgY2xheS1jb2xvdXJlZCJ9LAogICAge2s6Indvcm1zIiwgbGFiOiJWaXNpYmxlIHdvcm1zIG9yIHJpY2UtbGlrZSBzZWdtZW50cyJ9LAogICAge2s6Im11Y3VzIiwgbGFiOiJIZWF2eSBtdWN1cyBvciBqZWxseSBjb2F0aW5nIn0sCiAgICB7azoiZm9yZWlnbiIsIGxhYjoiU29tZXRoaW5nIHRoZXkgc2hvdWxkbid0IGhhdmUgZWF0ZW4ifQogIF07CgogIHZhciBXRUVLUyA9IFsKICAgIHt0OiJBdWRpdCAmIHJlbW92ZSJ9LAogICAge3Q6IkludHJvZHVjZSBzdXBwb3J0In0sCiAgICB7dDoiT2JzZXJ2ZSAmIGFkanVzdCJ9LAogICAge3Q6IkVzdGFibGlzaCBiYXNlbGluZSJ9CiAgXTsKCiAgdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9uemFHcnQiKTsKICBpZighcm9vdCl7IHJldHVybjsgfQoKICB2YXIgc3RvcmFnZU9LID0gdHJ1ZTsKICB2YXIgbWVtID0gbnVsbDsKCiAgZnVuY3Rpb24gdGVzdFN0b3JhZ2UoKXsKICAgIHRyeXsKICAgICAgdmFyIHQgPSAiX19ncnRfdF9fIjsKICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHQsIjEiKTsKICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHQpOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH1jYXRjaChlKXsgcmV0dXJuIGZhbHNlOyB9CiAgfQoKICBmdW5jdGlvbiBsb2FkKCl7CiAgICBpZighc3RvcmFnZU9LKXsgcmV0dXJuIG1lbTsgfQogICAgdHJ5ewogICAgICB2YXIgcmF3ID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKENGRy5ucyk7CiAgICAgIGlmKCFyYXcpeyByZXR1cm4gbnVsbDsgfQogICAgICByZXR1cm4gSlNPTi5wYXJzZShyYXcpOwogICAgfWNhdGNoKGUpeyByZXR1cm4gbnVsbDsgfQogIH0KCiAgZnVuY3Rpb24gc2F2ZSgpewogICAgaWYoIXN0b3JhZ2VPSyl7IG1lbSA9IHN0YXRlOyByZXR1cm47IH0KICAgIHRyeXsgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKENGRy5ucywgSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTsgfQogICAgY2F0Y2goZSl7IHN0b3JhZ2VPSyA9IGZhbHNlOyBtZW0gPSBzdGF0ZTsgc2hvd1N0b3JhZ2VXYXJuKCk7IH0KICB9CgogIGZ1bmN0aW9uIHNob3dTdG9yYWdlV2FybigpewogICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydFN0b3JhZ2VXYXJuIik7CiAgICBpZighZWwpeyByZXR1cm47IH0KICAgIGVsLnRleHRDb250ZW50ID0gIlRoaXMgYnJvd3NlciBpcyBibG9ja2luZyBsb2NhbCBzdG9yYWdlLCBzbyB0b2RheSdzIGVudHJpZXMgd29uJ3QgYmUgcmVtZW1iZXJlZCBhZnRlciB5b3UgY2xvc2UgdGhlIHBhZ2UuIFByaXZhdGUvaW5jb2duaXRvIG1vZGUgaXMgdGhlIHVzdWFsIGNhdXNlLiBFdmVyeXRoaW5nIGVsc2Ugc3RpbGwgd29ya3MuIjsKICAgIGVsLmhpZGRlbiA9IGZhbHNlOwogIH0KCiAgdmFyIHN0YXRlID0gbnVsbDsKCiAgZnVuY3Rpb24gYmxhbmtTdGF0ZSgpewogICAgcmV0dXJuIHsgZW1haWw6IiIsIGRvZ05hbWU6IiIsIGNvbnNlbnRBdDoiIiwgc3RhcnREYXRlOiIiLCBlbnRyaWVzOnt9LCB3ZWlnaHRzOnt9LCBoZXJvTW9kZToiYmFzZWxpbmUiLCB1cGdyYWRlRGlzbWlzc2VkOmZhbHNlLCBzdWJzY3JpYmVkOmZhbHNlLCBzdWJzY3JpYmVUcmllczowIH07CiAgfQoKICBmdW5jdGlvbiBwYWQobil7IHJldHVybiBuPDEwID8gIjAiK24gOiAiIituOyB9CiAgZnVuY3Rpb24ga2V5T2YoZCl7IHJldHVybiBkLmdldEZ1bGxZZWFyKCkrIi0iK3BhZChkLmdldE1vbnRoKCkrMSkrIi0iK3BhZChkLmdldERhdGUoKSk7IH0KICBmdW5jdGlvbiBwYXJzZUtleShrKXsgdmFyIHAgPSBrLnNwbGl0KCItIik7IHJldHVybiBuZXcgRGF0ZShwYXJzZUludChwWzBdLDEwKSwgcGFyc2VJbnQocFsxXSwxMCktMSwgcGFyc2VJbnQocFsyXSwxMCkpOyB9CiAgZnVuY3Rpb24gdG9kYXlLZXkoKXsgcmV0dXJuIGtleU9mKG5ldyBEYXRlKCkpOyB9CiAgZnVuY3Rpb24gZGF5c0JldHdlZW4oYSxiKXsKICAgIHZhciBtcyA9IHBhcnNlS2V5KGIpLmdldFRpbWUoKSAtIHBhcnNlS2V5KGEpLmdldFRpbWUoKTsKICAgIHJldHVybiBNYXRoLnJvdW5kKG1zLzg2NDAwMDAwKTsKICB9CiAgZnVuY3Rpb24gZGF5TnVtYmVyKGspeyByZXR1cm4gZGF5c0JldHdlZW4oc3RhdGUuc3RhcnREYXRlLCBrKSArIDE7IH0KICBmdW5jdGlvbiB3ZWVrT2YoZG4peyB2YXIgdyA9IE1hdGguY2VpbChkbi83KTsgaWYodzwxKXt3PTE7fSBpZih3PjQpe3c9NDt9IHJldHVybiB3OyB9CiAgZnVuY3Rpb24gZm10U2hvcnQoayl7CiAgICB2YXIgZCA9IHBhcnNlS2V5KGspOwogICAgdmFyIGRheXMgPSBbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdOwogICAgdmFyIG1vbnMgPSBbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdOwogICAgcmV0dXJuIGRheXNbZC5nZXREYXkoKV0rIiAiK2QuZ2V0RGF0ZSgpKyIgIittb25zW2QuZ2V0TW9udGgoKV07CiAgfQogIGZ1bmN0aW9uIGVzYyhzKXsKICAgIHJldHVybiBTdHJpbmcocykucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iik7CiAgfQogIGZ1bmN0aW9uIGRvZ1Bvc3Nlc3NpdmUoKXsKICAgIGlmKHN0YXRlLmRvZ05hbWUpeyByZXR1cm4gZXNjKHN0YXRlLmRvZ05hbWUpKyIncyI7IH0KICAgIHJldHVybiAiWW91ciBkb2cncyI7CiAgfQogIGZ1bmN0aW9uIGRvZ05hbWUoKXsgcmV0dXJuIHN0YXRlLmRvZ05hbWUgPyBlc2Moc3RhdGUuZG9nTmFtZSkgOiAieW91ciBkb2ciOyB9CgogIGZ1bmN0aW9uIGxvZ2dlZEtleXMoKXsKICAgIHZhciBrcyA9IFtdOwogICAgZm9yKHZhciBrIGluIHN0YXRlLmVudHJpZXMpeyBpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RhdGUuZW50cmllcyxrKSl7IGtzLnB1c2goayk7IH0gfQogICAga3Muc29ydCgpOwogICAgcmV0dXJuIGtzOwogIH0KCiAgZnVuY3Rpb24gZ29vZERheXMoa2V5cyl7CiAgICB2YXIgZ29vZCA9IDAsIG4gPSAwOwogICAgZm9yKHZhciBpPTA7aTxrZXlzLmxlbmd0aDtpKyspewogICAgICB2YXIgZSA9IHN0YXRlLmVudHJpZXNba2V5c1tpXV07CiAgICAgIGlmKCFlIHx8IHR5cGVvZiBlLnN0b29sICE9PSAibnVtYmVyIil7IGNvbnRpbnVlOyB9CiAgICAgIG4rKzsKICAgICAgaWYoSEVBTFRIWS5pbmRleE9mKGUuc3Rvb2wpID4gLTEpeyBnb29kKys7IH0KICAgIH0KICAgIHJldHVybiB7IG46biwgZ29vZDpnb29kLCBwY3Q6IG4gPyBNYXRoLnJvdW5kKGdvb2QvbioxMDApIDogMCB9OwogIH0KCiAgLyogLS0tLS0tLS0tLSBLbGF2aXlvIC0tLS0tLS0tLS0gKi8KCiAgZnVuY3Rpb24ga2xhdml5b1N1YnNjcmliZShlbWFpbCwgZG9nKXsKICAgIHZhciBLID0gQ0ZHLmtsYXZpeW87CiAgICBpZighSy5jb21wYW55SWQgfHwgIUsubGlzdElkKXsgcmV0dXJuOyB9CiAgICBpZighZW1haWwpeyByZXR1cm47IH0KICAgIGlmKHR5cGVvZiB3aW5kb3cuZmV0Y2ggIT09ICJmdW5jdGlvbiIpeyByZXR1cm47IH0KICAgIGlmKChzdGF0ZS5zdWJzY3JpYmVUcmllcyB8fCAwKSA+PSBLLm1heFRyaWVzKXsgcmV0dXJuOyB9CgogICAgc3RhdGUuc3Vic2NyaWJlVHJpZXMgPSAoc3RhdGUuc3Vic2NyaWJlVHJpZXMgfHwgMCkgKyAxOwogICAgc2F2ZSgpOwoKICAgIHZhciBwcm9wcyA9IHsgIlNpZ251cCBTb3VyY2UiOiBLLnNvdXJjZSB9OwogICAgaWYoSy5zZW5kRG9nTmFtZSAmJiBkb2cpeyBwcm9wc1siRG9nIE5hbWUiXSA9IGRvZzsgfQoKICAgIHZhciBwYXlsb2FkID0gewogICAgICBkYXRhOiB7CiAgICAgICAgdHlwZTogInN1YnNjcmlwdGlvbiIsCiAgICAgICAgYXR0cmlidXRlczogewogICAgICAgICAgY3VzdG9tX3NvdXJjZTogSy5zb3VyY2UsCiAgICAgICAgICBwcm9maWxlOiB7CiAgICAgICAgICAgIGRhdGE6IHsKICAgICAgICAgICAgICB0eXBlOiAicHJvZmlsZSIsCiAgICAgICAgICAgICAgYXR0cmlidXRlczogewogICAgICAgICAgICAgICAgZW1haWw6IGVtYWlsLAogICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcHMsCiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25zOiB7IGVtYWlsOiB7IG1hcmtldGluZzogeyBjb25zZW50OiAiU1VCU0NSSUJFRCIgfSB9IH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHJlbGF0aW9uc2hpcHM6IHsKICAgICAgICAgIGxpc3Q6IHsgZGF0YTogeyB0eXBlOiAibGlzdCIsIGlkOiBLLmxpc3RJZCB9IH0KICAgICAgICB9CiAgICAgIH0KICAgIH07CgogICAgdHJ5ewogICAgICB3aW5kb3cuZmV0Y2goImh0dHBzOi8vYS5rbGF2aXlvLmNvbS9jbGllbnQvc3Vic2NyaXB0aW9ucy8\/Y29tcGFueV9pZD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KEsuY29tcGFueUlkKSwgewogICAgICAgIG1ldGhvZDogIlBPU1QiLAogICAgICAgIGhlYWRlcnM6IHsgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiwgInJldmlzaW9uIjogSy5yZXZpc2lvbiB9LAogICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLAogICAgICAgIGtlZXBhbGl2ZTogdHJ1ZQogICAgICB9KS50aGVuKGZ1bmN0aW9uKHJlcyl7CiAgICAgICAgaWYocmVzICYmIChyZXMuc3RhdHVzID09PSAyMDIgfHwgcmVzLm9rKSl7CiAgICAgICAgICBzdGF0ZS5zdWJzY3JpYmVkID0gdHJ1ZTsKICAgICAgICAgIHNhdmUoKTsKICAgICAgICB9CiAgICAgIH0pWyJjYXRjaCJdKGZ1bmN0aW9uKCl7IC8qIG9mZmxpbmUgb3IgYmxvY2tlZCAtIHJldHJpZWQgb24gbmV4dCB2aXNpdCAqLyB9KTsKICAgIH1jYXRjaChlKXsgLyogbmV2ZXIgbGV0IGxlYWQgY2FwdHVyZSBicmVhayB0aGUgdG9vbCAqLyB9CiAgfQoKICAvKiAtLS0tLS0tLS0tIGdhdGUgLS0tLS0tLS0tLSAqLwoKICBmdW5jdGlvbiB2YWxpZEVtYWlsKHYpewogICAgcmV0dXJuIC9eW15cc0BdK0BbXlxzQF0rXC5bXlxzQF17Mix9JC8udGVzdCh2KTsKICB9CgogIGZ1bmN0aW9uIGluaXRHYXRlKCl7CiAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydEdhdGVCdG4iKTsKICAgIHZhciBlcnIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0R2F0ZUVyciIpOwogICAgdmFyIGVtICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncnRFbWFpbCIpOwogICAgdmFyIGRuICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncnREb2dOYW1lIik7CiAgICBpZighYnRuIHx8ICFlbSl7IHJldHVybjsgfQoKICAgIGZ1bmN0aW9uIGdvKCl7CiAgICAgIHZhciB2ID0gKGVtLnZhbHVlfHwiIikudHJpbSgpOwogICAgICBpZighdmFsaWRFbWFpbCh2KSl7CiAgICAgICAgZXJyLnRleHRDb250ZW50ID0gIlRoYXQgZW1haWwgZG9lc24ndCBsb29rIHJpZ2h0LiBDaGVjayBpdCBhbmQgdHJ5IGFnYWluLiI7CiAgICAgICAgZXJyLmhpZGRlbiA9IGZhbHNlOwogICAgICAgIGVtLmZvY3VzKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGVyci5oaWRkZW4gPSB0cnVlOwogICAgICBzdGF0ZSA9IGJsYW5rU3RhdGUoKTsKICAgICAgc3RhdGUuZW1haWwgPSB2OwogICAgICBzdGF0ZS5kb2dOYW1lID0gKGRuICYmIGRuLnZhbHVlID8gZG4udmFsdWUudHJpbSgpLnNsaWNlKDAsNDApIDogIiIpOwogICAgICBzdGF0ZS5jb25zZW50QXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7CiAgICAgIHN0YXRlLnN0YXJ0RGF0ZSA9IHRvZGF5S2V5KCk7CiAgICAgIHNhdmUoKTsKICAgICAgb3BlbkFwcCgpOwogICAgICBrbGF2aXlvU3Vic2NyaWJlKHN0YXRlLmVtYWlsLCBzdGF0ZS5kb2dOYW1lKTsKICAgIH0KCiAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBnbyk7CiAgICBlbS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgZnVuY3Rpb24oZXYpeyBpZihldi5rZXkgPT09ICJFbnRlciIpeyBnbygpOyB9IH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSBsb2cgdmlldyAtLS0tLS0tLS0tICovCgogIHZhciBkcmFmdCA9IG51bGw7CgogIGZ1bmN0aW9uIG5ld0RyYWZ0KCl7CiAgICByZXR1cm4geyBzdG9vbDpudWxsLCBlbmVyZ3k6bnVsbCwgYXBwZXRpdGU6bnVsbCwgcmVmdXNlZDpmYWxzZSwgZmxhcmU6bnVsbCwgZmxhZ3M6W10sIHdlaWdodDoiIiB9OwogIH0KCiAgZnVuY3Rpb24gc2VsZWN0ZWREYXkoKXsKICAgIHZhciBzZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0RGF5U2VsIik7CiAgICByZXR1cm4gc2VsICYmIHNlbC52YWx1ZSA\/IHNlbC52YWx1ZSA6IHRvZGF5S2V5KCk7CiAgfQoKICBmdW5jdGlvbiBidWlsZERheVNlbGVjdCgpewogICAgdmFyIHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncnREYXlTZWwiKTsKICAgIGlmKCFzZWwpeyByZXR1cm47IH0KICAgIHZhciB0ayA9IHRvZGF5S2V5KCk7CiAgICB2YXIgY3VyRG4gPSBkYXlOdW1iZXIodGspOwogICAgdmFyIG91dCA9IFtdOwogICAgdmFyIHN0YXJ0ID0gY3VyRG4gLSA2OwogICAgaWYoc3RhcnQgPCAxKXsgc3RhcnQgPSAxOyB9CiAgICBmb3IodmFyIGRuID0gY3VyRG47IGRuID49IHN0YXJ0OyBkbi0tKXsKICAgICAgdmFyIGQgPSBwYXJzZUtleShzdGF0ZS5zdGFydERhdGUpOwogICAgICBkLnNldERhdGUoZC5nZXREYXRlKCkgKyAoZG4tMSkpOwogICAgICB2YXIgayA9IGtleU9mKGQpOwogICAgICB2YXIgbGFiZWw7CiAgICAgIGlmKGsgPT09IHRrKXsgbGFiZWwgPSAiVG9kYXkiOyB9CiAgICAgIGVsc2UgaWYoZGF5c0JldHdlZW4oayx0aykgPT09IDEpeyBsYWJlbCA9ICJZZXN0ZXJkYXkiOyB9CiAgICAgIGVsc2UgeyBsYWJlbCA9IGZtdFNob3J0KGspOyB9CiAgICAgIGxhYmVsICs9ICIgIFx1MDBiNyAgRGF5ICIgKyBkbjsKICAgICAgaWYoc3RhdGUuZW50cmllc1trXSl7IGxhYmVsICs9ICIgIFx1MjcxMyI7IH0KICAgICAgb3V0LnB1c2goJzxvcHRpb24gdmFsdWU9IicraysnIj4nK2VzYyhsYWJlbCkrJzwvb3B0aW9uPicpOwogICAgfQogICAgc2VsLmlubmVySFRNTCA9IG91dC5qb2luKCIiKTsKICAgIHNlbC52YWx1ZSA9IHRrOwogIH0KCiAgZnVuY3Rpb24gb3B0QnV0dG9uKGNscywgbGFiZWwsIHN1Yil7CiAgICB2YXIgYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwogICAgYi50eXBlID0gImJ1dHRvbiI7CiAgICBiLmNsYXNzTmFtZSA9ICJncnQtb3B0ICIgKyBjbHM7CiAgICBiLmlubmVySFRNTCA9IHN1YiA\/ICgnPHNwYW4gY2xhc3M9ImdydC1nbnVtIj4nK2xhYmVsKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImdydC1nbGFiIj4nK2VzYyhzdWIpKyc8L3NwYW4+JykgOiBlc2MobGFiZWwpOwogICAgcmV0dXJuIGI7CiAgfQoKICBmdW5jdGlvbiBtYXJrR3JvdXAoY29udGFpbmVyLCB2YWx1ZSwgYXR0cil7CiAgICB2YXIga2lkcyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24iKTsKICAgIGZvcih2YXIgaT0wO2k8a2lkcy5sZW5ndGg7aSsrKXsKICAgICAgdmFyIHYgPSBraWRzW2ldLmdldEF0dHJpYnV0ZShhdHRyKTsKICAgICAgaWYodmFsdWUgIT09IG51bGwgJiYgU3RyaW5nKHZhbHVlKSA9PT0gdil7IGtpZHNbaV0uY2xhc3NMaXN0LmFkZCgiaXMtc2VsIik7IH0KICAgICAgZWxzZSB7IGtpZHNbaV0uY2xhc3NMaXN0LnJlbW92ZSgiaXMtc2VsIik7IH0KICAgIH0KICB9CgogIC8qIC0tLS0tLS0tLS0gdHJhbnNsYXRhYmxlIG9wdGlvbiBsYWJlbHMgLS0tLS0tLS0tLQogICAgIEV2ZXJ5IG9wdGlvbiBsYWJlbCBpcyB3cml0dGVuIGludG8gdGhlIHBhZ2UgbWFya3VwIHNvIFdQTUwgY2FuIHRyYW5zbGF0ZQogICAgIGl0IG9uIHRoZSAvZGUvIC9lcy8gL2ZyLyAvbmwvIHZlcnNpb25zLiBUaGUgYXJyYXlzIGFib3ZlIGFyZSB0aGUgRW5nbGlzaAogICAgIGZhbGxiYWNrOiBpZiB0aGUgbWFya3VwIGlzIG1pc3Npbmcgb3IgaGFzIGJlZW4gc3RyaXBwZWQsIGVhY2ggYnVpbGRlcgogICAgIGNyZWF0ZXMgaXRzIGJ1dHRvbnMgZXhhY3RseSBhcyBpdCBkaWQgYmVmb3JlLiBUaGUga2V5IHZhbHVlcyAoZGF0YS1nLAogICAgIGRhdGEtdiwgZGF0YS1rKSBhcmUgcmUtYXNzZXJ0ZWQgZnJvbSB0aGUgYXJyYXlzIGFmdGVyIGFkb3B0aW9uLCBzbyB0aGUKICAgICB0b29sIGtlZXBzIHdvcmtpbmcgZXZlbiBpZiBhIHRyYW5zbGF0aW9uIGxheWVyIGFsdGVycyBhbiBhdHRyaWJ1dGUuICovCgogIHZhciBHUkFERV9XT1JEID0gIkdyYWRlIjsKCiAgZnVuY3Rpb24gbGFiZWxUZXh0KGVsKXsKICAgIHJldHVybiAoZWwgJiYgZWwudGV4dENvbnRlbnQpID8gZWwudGV4dENvbnRlbnQucmVwbGFjZSgvXHMrL2csICIgIikudHJpbSgpIDogIiI7CiAgfQoKICBmdW5jdGlvbiBhZG9wdEkxOG4oKXsKICAgIHZhciB3cmFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydEkxOG4iKTsKICAgIGlmKCF3cmFwKXsgcmV0dXJuOyB9CiAgICB2YXIgd3MgPSB3cmFwLnF1ZXJ5U2VsZWN0b3JBbGwoInNwYW5bZGF0YS13XSIpOwogICAgZm9yKHZhciBpPTA7aTx3cy5sZW5ndGg7aSsrKXsKICAgICAgdmFyIG4gPSBwYXJzZUludCh3c1tpXS5nZXRBdHRyaWJ1dGUoImRhdGEtdyIpLCAxMCk7CiAgICAgIHZhciB0ID0gbGFiZWxUZXh0KHdzW2ldKTsKICAgICAgaWYodCAmJiBuID49IDEgJiYgbiA8PSBXRUVLUy5sZW5ndGgpeyBXRUVLU1tuLTFdLnQgPSB0OyB9CiAgICB9CiAgICB2YXIgZyA9IGxhYmVsVGV4dCh3cmFwLnF1ZXJ5U2VsZWN0b3IoJ3NwYW5bZGF0YS10PSJncmFkZSJdJykpOwogICAgaWYoZyl7IEdSQURFX1dPUkQgPSBnOyB9CiAgfQoKICBmdW5jdGlvbiBncmFkZURlc2NMaW5lKG4pewogICAgdmFyIGcgPSBHUkFERVNbbi0xXTsKICAgIHJldHVybiBnID8gKEdSQURFX1dPUkQgKyAiICIgKyBuICsgIiBcdTIwMTQgIiArIGcuZGVzYykgOiAiIjsKICB9CgogIGZ1bmN0aW9uIHdpcmVHcmFkZSh3cmFwLCBiLCBpZHgpewogICAgdmFyIG4gPSBwYXJzZUludChiLmdldEF0dHJpYnV0ZSgiZGF0YS1nIiksIDEwKTsKICAgIGlmKCEobiA+PSAxICYmIG4gPD0gR1JBREVTLmxlbmd0aCkpeyBuID0gaWR4ICsgMTsgfQogICAgdmFyIGcgPSBHUkFERVNbbi0xXTsKICAgIGlmKCFnKXsgcmV0dXJuOyB9CiAgICBiLnNldEF0dHJpYnV0ZSgiZGF0YS1nIiwgbik7CgogICAgdmFyIGxhYiA9IGxhYmVsVGV4dChiLnF1ZXJ5U2VsZWN0b3IoIi5ncnQtZ2xhYiIpKTsKICAgIHZhciBkZXNjID0gbGFiZWxUZXh0KGIucXVlcnlTZWxlY3RvcigiLmdydC1nZGVzYyIpKTsKICAgIGlmKGxhYil7IGcubGFiID0gbGFiOyB9CiAgICBpZihkZXNjKXsgZy5kZXNjID0gZGVzYzsgfQogICAgYi5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBHUkFERV9XT1JEICsgIiAiICsgbiArICIsICIgKyBnLmxhYik7CgogICAgdmFyIGltZyA9IENGRy5ncmFkZUltYWdlc1tuLTFdOwogICAgaWYoaW1nICYmICFiLnF1ZXJ5U2VsZWN0b3IoImltZyIpKXsKICAgICAgdmFyIGltID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CiAgICAgIGltLnNyYyA9IGltZzsKICAgICAgaW0uYWx0ID0gIiI7CiAgICAgIGltLnNldEF0dHJpYnV0ZSgibG9hZGluZyIsICJsYXp5Iik7CiAgICAgIGltLm9uZXJyb3IgPSBmdW5jdGlvbigpeyBpbS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOyB9OwogICAgICBpZihiLmZpcnN0Q2hpbGQpeyBiLmluc2VydEJlZm9yZShpbSwgYi5maXJzdENoaWxkKTsgfSBlbHNlIHsgYi5hcHBlbmRDaGlsZChpbSk7IH0KICAgIH0KCiAgICBiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKXsKICAgICAgZHJhZnQuc3Rvb2wgPSBuOwogICAgICBtYXJrR3JvdXAod3JhcCwgbiwgImRhdGEtZyIpOwogICAgICB2YXIgZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncnRHcmFkZURlc2MiKTsKICAgICAgaWYoZCl7IGQudGV4dENvbnRlbnQgPSBncmFkZURlc2NMaW5lKG4pOyB9CiAgICAgIGIuYmx1cigpOwogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBidWlsZEdyYWRlcygpewogICAgdmFyIHdyYXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0R3JhZGVzIik7CiAgICBpZighd3JhcCl7IHJldHVybjsgfQoKICAgIHZhciBleGlzdGluZyA9IHdyYXAucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uW2RhdGEtZ10iKTsKICAgIGlmKGV4aXN0aW5nICYmIGV4aXN0aW5nLmxlbmd0aCl7CiAgICAgIGZvcih2YXIgaT0wO2k8ZXhpc3RpbmcubGVuZ3RoO2krKyl7IHdpcmVHcmFkZSh3cmFwLCBleGlzdGluZ1tpXSwgaSk7IH0KICAgICAgcmV0dXJuOwogICAgfQoKICAgIHdyYXAuaW5uZXJIVE1MID0gIiI7CiAgICBmb3IodmFyIGo9MDtqPEdSQURFUy5sZW5ndGg7aisrKXsKICAgICAgKGZ1bmN0aW9uKGcsIGl4KXsKICAgICAgICB2YXIgYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwogICAgICAgIGIudHlwZSA9ICJidXR0b24iOwogICAgICAgIGIuY2xhc3NOYW1lID0gImdydC1vcHQgZ3J0LWdyYWRlIjsKICAgICAgICBiLnNldEF0dHJpYnV0ZSgiZGF0YS1nIiwgZy5uKTsKICAgICAgICB2YXIgaW1nID0gQ0ZHLmdyYWRlSW1hZ2VzW2cubi0xXTsKICAgICAgICB2YXIgaHRtbCA9ICIiOwogICAgICAgIGlmKGltZyl7CiAgICAgICAgICBodG1sICs9ICc8aW1nIHNyYz0iJytlc2MoaW1nKSsnIiBhbHQ9IiIgbG9hZGluZz0ibGF6eSIgb25lcnJvcj0idGhpcy5zdHlsZS5kaXNwbGF5PVwnbm9uZVwnIj4nOwogICAgICAgIH0KICAgICAgICBodG1sICs9ICc8c3BhbiBjbGFzcz0iZ3J0LWdudW0iPicrZy5uKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImdydC1nbGFiIj4nK2VzYyhnLmxhYikrJzwvc3Bhbj4nOwogICAgICAgIGIuaW5uZXJIVE1MID0gaHRtbDsKICAgICAgICB3cmFwLmFwcGVuZENoaWxkKGIpOwogICAgICAgIHdpcmVHcmFkZSh3cmFwLCBiLCBpeCk7CiAgICAgIH0pKEdSQURFU1tqXSwgaik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiB3aXJlQ2hvaWNlKHdyYXAsIGIsIGxpc3QsIGZpZWxkLCBpZHgpewogICAgdmFyIHYgPSBiLmdldEF0dHJpYnV0ZSgiZGF0YS12Iik7CiAgICB2YXIgbyA9IG51bGw7CiAgICBmb3IodmFyIGk9MDtpPGxpc3QubGVuZ3RoO2krKyl7IGlmKGxpc3RbaV0udiA9PT0gdil7IG8gPSBsaXN0W2ldOyBicmVhazsgfSB9CiAgICBpZighbyl7IG8gPSBsaXN0W2lkeF07IH0KICAgIGlmKCFvKXsgcmV0dXJuOyB9CiAgICBiLnNldEF0dHJpYnV0ZSgiZGF0YS12Iiwgby52KTsKCiAgICB2YXIgdCA9IGxhYmVsVGV4dChiKTsKICAgIGlmKHQpeyBvLmxhYiA9IHQ7IH0KCiAgICBiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKXsKICAgICAgZHJhZnRbZmllbGRdID0gby52OwogICAgICBtYXJrR3JvdXAod3JhcCwgby52LCAiZGF0YS12Iik7CiAgICAgIGIuYmx1cigpOwogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBidWlsZENob2ljZShpZCwgbGlzdCwgZmllbGQpewogICAgdmFyIHdyYXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICBpZighd3JhcCl7IHJldHVybjsgfQoKICAgIHZhciBleGlzdGluZyA9IHdyYXAucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uW2RhdGEtdl0iKTsKICAgIGlmKGV4aXN0aW5nICYmIGV4aXN0aW5nLmxlbmd0aCl7CiAgICAgIGZvcih2YXIgaT0wO2k8ZXhpc3RpbmcubGVuZ3RoO2krKyl7IHdpcmVDaG9pY2Uod3JhcCwgZXhpc3RpbmdbaV0sIGxpc3QsIGZpZWxkLCBpKTsgfQogICAgICByZXR1cm47CiAgICB9CgogICAgd3JhcC5pbm5lckhUTUwgPSAiIjsKICAgIGZvcih2YXIgaj0wO2o8bGlzdC5sZW5ndGg7aisrKXsKICAgICAgKGZ1bmN0aW9uKG8sIGl4KXsKICAgICAgICB2YXIgYiA9IG9wdEJ1dHRvbigiIiwgby5sYWIpOwogICAgICAgIGIuc2V0QXR0cmlidXRlKCJkYXRhLXYiLCBvLnYpOwogICAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoYik7CiAgICAgICAgd2lyZUNob2ljZSh3cmFwLCBiLCBsaXN0LCBmaWVsZCwgaXgpOwogICAgICB9KShsaXN0W2pdLCBqKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHdpcmVGbGFnKHdyYXAsIGIsIGlkeCl7CiAgICB2YXIgayA9IGIuZ2V0QXR0cmlidXRlKCJkYXRhLWsiKTsKICAgIHZhciBmID0gbnVsbDsKICAgIGZvcih2YXIgaT0wO2k8RkxBR1MubGVuZ3RoO2krKyl7IGlmKEZMQUdTW2ldLmsgPT09IGspeyBmID0gRkxBR1NbaV07IGJyZWFrOyB9IH0KICAgIGlmKCFmKXsgZiA9IEZMQUdTW2lkeF07IH0KICAgIGlmKCFmKXsgcmV0dXJuOyB9CiAgICBiLnNldEF0dHJpYnV0ZSgiZGF0YS1rIiwgZi5rKTsKCiAgICB2YXIgdCA9IGxhYmVsVGV4dChiKTsKICAgIGlmKHQpeyBmLmxhYiA9IHQ7IH0KCiAgICBiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKXsKICAgICAgdmFyIGl4ID0gZHJhZnQuZmxhZ3MuaW5kZXhPZihmLmspOwogICAgICBpZihpeCA+IC0xKXsgZHJhZnQuZmxhZ3Muc3BsaWNlKGl4LDEpOyBiLmNsYXNzTGlzdC5yZW1vdmUoImlzLXNlbCIpOyB9CiAgICAgIGVsc2UgeyBkcmFmdC5mbGFncy5wdXNoKGYuayk7IGIuY2xhc3NMaXN0LmFkZCgiaXMtc2VsIik7IH0KICAgICAgYi5ibHVyKCk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIGJ1aWxkRmxhZ3MoKXsKICAgIHZhciB3cmFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydEZsYWdzIik7CiAgICBpZighd3JhcCl7IHJldHVybjsgfQoKICAgIHZhciBleGlzdGluZyA9IHdyYXAucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uW2RhdGEta10iKTsKICAgIGlmKGV4aXN0aW5nICYmIGV4aXN0aW5nLmxlbmd0aCl7CiAgICAgIGZvcih2YXIgaT0wO2k8ZXhpc3RpbmcubGVuZ3RoO2krKyl7IHdpcmVGbGFnKHdyYXAsIGV4aXN0aW5nW2ldLCBpKTsgfQogICAgICByZXR1cm47CiAgICB9CgogICAgd3JhcC5pbm5lckhUTUwgPSAiIjsKICAgIGZvcih2YXIgaj0wO2o8RkxBR1MubGVuZ3RoO2orKyl7CiAgICAgIChmdW5jdGlvbihmLCBpeCl7CiAgICAgICAgdmFyIGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKICAgICAgICBiLnR5cGUgPSAiYnV0dG9uIjsKICAgICAgICBiLmNsYXNzTmFtZSA9ICJncnQtb3B0IGdydC1jaGVjayI7CiAgICAgICAgYi5zZXRBdHRyaWJ1dGUoImRhdGEtayIsIGYuayk7CiAgICAgICAgYi50ZXh0Q29udGVudCA9IGYubGFiOwogICAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoYik7CiAgICAgICAgd2lyZUZsYWcod3JhcCwgYiwgaXgpOwogICAgICB9KShGTEFHU1tqXSwgaik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBsb2FkRHJhZnRGb3Ioayl7CiAgICBkcmFmdCA9IG5ld0RyYWZ0KCk7CiAgICB2YXIgZSA9IHN0YXRlLmVudHJpZXNba107CiAgICBpZihlKXsKICAgICAgZHJhZnQuc3Rvb2wgPSAodHlwZW9mIGUuc3Rvb2wgPT09ICJudW1iZXIiKSA\/IGUuc3Rvb2wgOiBudWxsOwogICAgICBkcmFmdC5lbmVyZ3kgPSBlLmVuZXJneSB8fCBudWxsOwogICAgICBkcmFmdC5hcHBldGl0ZSA9IGUuYXBwZXRpdGUgfHwgbnVsbDsKICAgICAgZHJhZnQucmVmdXNlZCA9ICEhZS5yZWZ1c2VkOwogICAgICBkcmFmdC5mbGFyZSA9IGUuZmxhcmUgfHwgbnVsbDsKICAgICAgZHJhZnQuZmxhZ3MgPSAoZS5mbGFncyB8fCBbXSkuc2xpY2UoKTsKICAgIH0KICAgIGlmKHN0YXRlLndlaWdodHNba10gIT0gbnVsbCl7IGRyYWZ0LndlaWdodCA9IFN0cmluZyhzdGF0ZS53ZWlnaHRzW2tdKTsgfQoKICAgIG1hcmtHcm91cChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0R3JhZGVzIiksIGRyYWZ0LnN0b29sLCAiZGF0YS1nIik7CiAgICBtYXJrR3JvdXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydEVuZXJneSIpLCBkcmFmdC5lbmVyZ3ksICJkYXRhLXYiKTsKICAgIG1hcmtHcm91cChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0QXBwZXRpdGUiKSwgZHJhZnQuYXBwZXRpdGUsICJkYXRhLXYiKTsKICAgIG1hcmtHcm91cChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0RmxhcmUiKSwgZHJhZnQuZmxhcmUsICJkYXRhLXYiKTsKCiAgICB2YXIgZGVzYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncnRHcmFkZURlc2MiKTsKICAgIGlmKGRlc2MpewogICAgICBkZXNjLnRleHRDb250ZW50ID0gZHJhZnQuc3Rvb2wgPyBncmFkZURlc2NMaW5lKGRyYWZ0LnN0b29sKSA6ICIiOwogICAgfQoKICAgIHZhciByZWYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0UmVmdXNlZCIpOwogICAgaWYocmVmKXsgaWYoZHJhZnQucmVmdXNlZCl7IHJlZi5jbGFzc0xpc3QuYWRkKCJpcy1zZWwiKTsgfSBlbHNlIHsgcmVmLmNsYXNzTGlzdC5yZW1vdmUoImlzLXNlbCIpOyB9IH0KCiAgICB2YXIgZncgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0RmxhZ3MiKTsKICAgIGlmKGZ3KXsKICAgICAgdmFyIGtpZHMgPSBmdy5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24iKTsKICAgICAgZm9yKHZhciBpPTA7aTxraWRzLmxlbmd0aDtpKyspewogICAgICAgIHZhciBrayA9IGtpZHNbaV0uZ2V0QXR0cmlidXRlKCJkYXRhLWsiKTsKICAgICAgICBpZihkcmFmdC5mbGFncy5pbmRleE9mKGtrKSA+IC0xKXsga2lkc1tpXS5jbGFzc0xpc3QuYWRkKCJpcy1zZWwiKTsgfSBlbHNlIHsga2lkc1tpXS5jbGFzc0xpc3QucmVtb3ZlKCJpcy1zZWwiKTsgfQogICAgICB9CiAgICB9CgogICAgdmFyIHcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0V2VpZ2h0Iik7CiAgICBpZih3KXsgdy52YWx1ZSA9IGRyYWZ0LndlaWdodDsgfQoKICAgIHZhciBtZXRhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydERheU1ldGEiKTsKICAgIGlmKG1ldGEpewogICAgICB2YXIgZG4gPSBkYXlOdW1iZXIoayk7CiAgICAgIGlmKGRuID4gQ0ZHLnJlc2V0RGF5cyl7CiAgICAgICAgbWV0YS50ZXh0Q29udGVudCA9ICJEYXkgIitkbisiIFx1MDBiNyByZXNldCBjb21wbGV0ZSI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWV0YS50ZXh0Q29udGVudCA9ICJEYXkgIitkbisiIG9mICIrQ0ZHLnJlc2V0RGF5cysiIFx1MDBiNyBXZWVrICIrd2Vla09mKGRuKSsiOiAiK1dFRUtTW3dlZWtPZihkbiktMV0udDsKICAgICAgfQogICAgfQoKICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0U2F2ZSIpOwogICAgaWYoYnRuKXsgYnRuLnRleHRDb250ZW50ID0gc3RhdGUuZW50cmllc1trXSA\/ICJVcGRhdGUgdGhpcyBkYXkiIDogIlNhdmUgdGhpcyBkYXkiOyB9CiAgfQoKICBmdW5jdGlvbiBzYXZlRGF5KCl7CiAgICB2YXIgayA9IHNlbGVjdGVkRGF5KCk7CiAgICB2YXIgdG9hc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0VG9hc3QiKTsKICAgIGlmKGRyYWZ0LnN0b29sID09PSBudWxsKXsKICAgICAgaWYodG9hc3QpewogICAgICAgIHRvYXN0LnRleHRDb250ZW50ID0gIlBpY2sgYSBzdG9vbCBzY29yZSBmaXJzdCBcdTIwMTQgaXQncyB0aGUgb25lIGZpZWxkIHRoZSB0cmVuZCBpcyBidWlsdCBvbi4iOwogICAgICAgIHRvYXN0LmhpZGRlbiA9IGZhbHNlOwogICAgICB9CiAgICAgIHZhciBnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydEdyYWRlcyIpOwogICAgICBpZihnICYmIGcuc2Nyb2xsSW50b1ZpZXcpeyBnLnNjcm9sbEludG9WaWV3KHtibG9jazoiY2VudGVyIn0pOyB9CiAgICAgIHJldHVybjsKICAgIH0KICAgIGlmKHRvYXN0KXsgdG9hc3QuaGlkZGVuID0gdHJ1ZTsgfQoKICAgIHN0YXRlLmVudHJpZXNba10gPSB7CiAgICAgIHN0b29sOiBkcmFmdC5zdG9vbCwKICAgICAgZW5lcmd5OiBkcmFmdC5lbmVyZ3ksCiAgICAgIGFwcGV0aXRlOiBkcmFmdC5hcHBldGl0ZSwKICAgICAgcmVmdXNlZDogISFkcmFmdC5yZWZ1c2VkLAogICAgICBmbGFyZTogZHJhZnQuZmxhcmUsCiAgICAgIGZsYWdzOiBkcmFmdC5mbGFncy5zbGljZSgpLAogICAgICBhdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpCiAgICB9OwoKICAgIHZhciB3RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0V2VpZ2h0Iik7CiAgICB2YXIgd3YgPSB3RWwgPyBwYXJzZUZsb2F0KHdFbC52YWx1ZSkgOiBOYU47CiAgICBpZighaXNOYU4od3YpICYmIHd2ID4gMCl7IHN0YXRlLndlaWdodHNba10gPSBNYXRoLnJvdW5kKHd2KjEwKS8xMDsgfQogICAgZWxzZSBpZihzdGF0ZS53ZWlnaHRzW2tdICE9IG51bGwgJiYgKCF3RWwgfHwgd0VsLnZhbHVlID09PSAiIikpeyBkZWxldGUgc3RhdGUud2VpZ2h0c1trXTsgfQoKICAgIHNhdmUoKTsKICAgIGJ1aWxkRGF5U2VsZWN0KCk7CiAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydERheVNlbCIpOwogICAgaWYoc2VsKXsgc2VsLnZhbHVlID0gazsgfQogICAgbG9hZERyYWZ0Rm9yKGspOwogICAgc2hvd1RhYigicHJvZyIpOwogICAgc2Nyb2xsVG9Ub29sKCk7CiAgfQoKICBmdW5jdGlvbiBzY3JvbGxUb1Rvb2woKXsKICAgIHRyeXsKICAgICAgaWYoIXJvb3QgfHwgdHlwZW9mIHJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICE9PSAiZnVuY3Rpb24iKXsgcmV0dXJuOyB9CiAgICAgIHZhciB0b3AgPSAod2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgMCk7CiAgICAgIHZhciB5ID0gcm9vdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB0b3AgLSBDRkcuc2Nyb2xsT2Zmc2V0OwogICAgICBpZih5IDwgMCl7IHkgPSAwOyB9CiAgICAgIHZhciBzbW9vdGggPSB0cnVlOwogICAgICB0cnl7CiAgICAgICAgaWYod2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIikubWF0Y2hlcyl7IHNtb290aCA9IGZhbHNlOyB9CiAgICAgIH1jYXRjaChlKXt9CiAgICAgIGlmKHNtb290aCl7CiAgICAgICAgdHJ5eyB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6eSwgYmVoYXZpb3I6InNtb290aCIgfSk7IHJldHVybjsgfWNhdGNoKGUpe30KICAgICAgfQogICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgeSk7CiAgICB9Y2F0Y2goZSl7fQogIH0KCiAgLyogLS0tLS0tLS0tLSB2ZXQgZ2F0ZSAtLS0tLS0tLS0tICovCgogIGZ1bmN0aW9uIHZldENoZWNrKCl7CiAgICB2YXIga3MgPSBsb2dnZWRLZXlzKCk7CiAgICB2YXIgZm91bmQgPSBbXTsKICAgIHZhciByZWNlbnQgPSBrcy5zbGljZSgtMyk7CiAgICBmb3IodmFyIGk9MDtpPHJlY2VudC5sZW5ndGg7aSsrKXsKICAgICAgdmFyIGUgPSBzdGF0ZS5lbnRyaWVzW3JlY2VudFtpXV07CiAgICAgIGlmKCFlIHx8ICFlLmZsYWdzKXsgY29udGludWU7IH0KICAgICAgZm9yKHZhciBqPTA7ajxlLmZsYWdzLmxlbmd0aDtqKyspewogICAgICAgIGlmKGUuZmxhZ3Nbal0gPT09ICJmb3JlaWduIil7IGNvbnRpbnVlOyB9CiAgICAgICAgaWYoZm91bmQuaW5kZXhPZihlLmZsYWdzW2pdKSA9PT0gLTEpeyBmb3VuZC5wdXNoKGUuZmxhZ3Nbal0pOyB9CiAgICAgIH0KICAgIH0KICAgIHZhciBydW43ID0gMCwgcnVuNjcgPSAwLCBzdG9wNyA9IGZhbHNlLCBzdG9wNjcgPSBmYWxzZTsKICAgIGZvcih2YXIgbSA9IGtzLmxlbmd0aC0xOyBtID49IDA7IG0tLSl7CiAgICAgIHZhciBlbiA9IHN0YXRlLmVudHJpZXNba3NbbV1dOwogICAgICB2YXIgZyA9IGVuID8gZW4uc3Rvb2wgOiBudWxsOwogICAgICBpZighc3RvcDcpeyBpZihnID09PSA3KXsgcnVuNysrOyB9IGVsc2UgeyBzdG9wNyA9IHRydWU7IH0gfQogICAgICBpZighc3RvcDY3KXsgaWYoZyA9PT0gNiB8fCBnID09PSA3KXsgcnVuNjcrKzsgfSBlbHNlIHsgc3RvcDY3ID0gdHJ1ZTsgfSB9CiAgICAgIGlmKHN0b3A3ICYmIHN0b3A2Nyl7IGJyZWFrOyB9CiAgICB9CiAgICB2YXIgd2F0ZXJ5UnVuID0gcnVuNyA+PSAzOwogICAgdmFyIGxvb3NlUnVuID0gcnVuNjcgPj0gNTsKICAgIGlmKCFmb3VuZC5sZW5ndGggJiYgIXdhdGVyeVJ1biAmJiAhbG9vc2VSdW4peyByZXR1cm4gIiI7IH0KCiAgICB2YXIgaXRlbXMgPSBbXTsKICAgIGZvcih2YXIgZj0wOyBmPGZvdW5kLmxlbmd0aDsgZisrKXsKICAgICAgZm9yKHZhciBnMj0wOyBnMjxGTEFHUy5sZW5ndGg7IGcyKyspewogICAgICAgIGlmKEZMQUdTW2cyXS5rID09PSBmb3VuZFtmXSl7IGl0ZW1zLnB1c2goIjxsaT4iK2VzYyhGTEFHU1tnMl0ubGFiKSsiPC9saT4iKTsgfQogICAgICB9CiAgICB9CiAgICBpZih3YXRlcnlSdW4peyBpdGVtcy5wdXNoKCI8bGk+V2F0ZXJ5IHN0b29sIChncmFkZSA3KSB0aHJlZSBsb2dnZWQgZGF5cyBydW5uaW5nPC9saT4iKTsgfQogICAgZWxzZSBpZihsb29zZVJ1bil7IGl0ZW1zLnB1c2goIjxsaT5EaWFycmhvZWEgKGdyYWRlIDYgb3IgNykgZml2ZSBsb2dnZWQgZGF5cyBydW5uaW5nPC9saT4iKTsgfQoKICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZ3J0LXZldCI+JyArCiAgICAgICc8aDU+Qm9vayBhIHZldCBhcHBvaW50bWVudDwvaDU+JyArCiAgICAgICc8cD5Zb3VcdTIwMTl2ZSBsb2dnZWQgc29tZXRoaW5nIGluIHRoZSBsYXN0IGZldyBkYXlzIHRoYXQgbmVlZHMgYSBwcm9mZXNzaW9uYWwgbG9vayByYXRoZXIgdGhhbiBtb3JlIHRyYWNraW5nOjwvcD4nICsKICAgICAgJzx1bD4nK2l0ZW1zLmpvaW4oIiIpKyc8L3VsPicgKwogICAgICAnPHAgc3R5bGU9Im1hcmdpbi10b3A6MTBweCI+S2VlcCBsb2dnaW5nIGlmIGl0IGhlbHBzIHlvdSBkZXNjcmliZSB0aGUgcGF0dGVybiB0byB5b3VyIHZldCBcdTIwMTQgYnV0IGRvblx1MjAxOXQgd2FpdCBvbiB0aGUgMzAtZGF5IHRyZW5kIHRvIGRlY2lkZS4gQ2FsbCB0aGVtLjwvcD4nICsKICAgICAgJzwvZGl2Pic7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGhlcm8gLS0tLS0tLS0tLSAqLwoKICBmdW5jdGlvbiBwY3RCbG9jayhjdXIsIHByZXZQY3QsIHByZXZMYWJlbCwgY3VyTGFiZWwsIG5vdGUpewogICAgdmFyIGRlbHRhID0gY3VyLnBjdCAtIHByZXZQY3Q7CiAgICB2YXIgY2xzID0gZGVsdGEgPiAwID8gInVwIiA6IChkZWx0YSA8IDAgPyAiZG93biIgOiAiZmxhdCIpOwogICAgdmFyIGFycm93ID0gZGVsdGEgPiAwID8gIlx1MjViMiIgOiAoZGVsdGEgPCAwID8gIlx1MjViYyIgOiAiXHUyMDEzIik7CiAgICB2YXIgY21wID0gIiI7CiAgICBpZihwcmV2UGN0ICE9PSBudWxsKXsKICAgICAgY21wID0gJzxwIGNsYXNzPSJncnQtaGVyby1jbXAiPjxzcGFuIGNsYXNzPSJncnQtZGVsdGEgJytjbHMrJyI+JythcnJvdysiICIrTWF0aC5hYnMoZGVsdGEpKyIgcG9pbnRzPC9zcGFuPiB2cyAiK2VzYyhwcmV2TGFiZWwpKyIgKCIrcHJldlBjdCsiJSk8L3A+IjsKICAgIH0KICAgIHJldHVybiAnPHAgY2xhc3M9ImdydC1oZXJvLWV5ZWJyb3ciPicrZXNjKGN1ckxhYmVsKSsnPC9wPicgKwogICAgICAnPHAgY2xhc3M9ImdydC1oZXJvLW51bSI+JytjdXIucGN0Kyc8c3BhbiBjbGFzcz0iZ3J0LWhlcm8tdW5pdCI+JTwvc3Bhbj48L3A+JyArCiAgICAgICc8cCBjbGFzcz0iZ3J0LWhlcm8tbGFiIj5nb29kIGRheXMgZm9yICcrZG9nTmFtZSgpKyc8L3A+JyArCiAgICAgIGNtcCArCiAgICAgIChub3RlID8gJzxwIGNsYXNzPSJncnQtaGVyby1ub3RlIj4nK25vdGUrJzwvcD4nIDogIiIpOwogIH0KCiAgZnVuY3Rpb24gaGVyb0hUTUwoKXsKICAgIHZhciBrcyA9IGxvZ2dlZEtleXMoKTsKICAgIHZhciBuID0ga3MubGVuZ3RoOwoKICAgIGlmKG4gPCA3KXsKICAgICAgdmFyIGxlZnQgPSA3IC0gbjsKICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJncnQtaGVybyI+JyArCiAgICAgICAgJzxwIGNsYXNzPSJncnQtaGVyby1leWVicm93Ij5CdWlsZGluZyB5b3VyIGJhc2VsaW5lPC9wPicgKwogICAgICAgICc8cCBjbGFzcz0iZ3J0LWhlcm8tbnVtIj4nK24rJzxzcGFuIGNsYXNzPSJncnQtaGVyby11bml0Ij4vNzwvc3Bhbj48L3A+JyArCiAgICAgICAgJzxwIGNsYXNzPSJncnQtaGVyby1sYWIiPmRheXMgbG9nZ2VkPC9wPicgKwogICAgICAgICc8cCBjbGFzcz0iZ3J0LWhlcm8tY21wIj5LZWVwIGdvaW5nIFx1MjAxNCAnK2RvZ1Bvc3Nlc3NpdmUoKSsnIGZpcnN0IHRyZW5kIHVubG9ja3MgYWZ0ZXIgJytsZWZ0KycgbW9yZSAnKyhsZWZ0PT09MT8iZGF5IjoiZGF5cyIpKycuPC9wPicgKwogICAgICAgICc8cCBjbGFzcz0iZ3J0LWhlcm8tbm90ZSI+V2VlayAxIGlzIHlvdXIgYmFzZWxpbmUuIEV2ZXJ5dGhpbmcgdGhhdCBmb2xsb3dzIGlzIG1lYXN1cmVkIGFnYWluc3QgaXQsIHNvIGxvZyBpdCBob25lc3RseSByYXRoZXIgdGhhbiBvcHRpbWlzdGljYWxseS48L3A+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICB9CgogICAgdmFyIGJvZHksIG5vdGUgPSAiIjsKICAgIGlmKHN0YXRlLmhlcm9Nb2RlID09PSAicm9sbGluZyIpewogICAgICB2YXIgcmVjZW50ID0ga3Muc2xpY2UoLTcpOwogICAgICB2YXIgcHJldiA9IGtzLnNsaWNlKC0xNCwgLTcpOwogICAgICB2YXIgckN1ciA9IGdvb2REYXlzKHJlY2VudCk7CiAgICAgIGlmKHByZXYubGVuZ3RoIDwgMyl7CiAgICAgICAgbm90ZSA9ICJZb3VyIHByZXZpb3VzIDctZGF5IHdpbmRvdyBmaWxscyBvdXQgYXMgeW91IGxvZyBtb3JlIGRheXMuIjsKICAgICAgICBib2R5ID0gcGN0QmxvY2sockN1ciwgbnVsbCwgIiIsICJMYXN0IDcgbG9nZ2VkIGRheXMiLCBub3RlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgclByZXYgPSBnb29kRGF5cyhwcmV2KTsKICAgICAgICBpZihwcmV2Lmxlbmd0aCA8IDcpeyBub3RlID0gIkNvbXBhcmVkIGFnYWluc3QgdGhlICIrcHJldi5sZW5ndGgrIiBkYXlzIGJlZm9yZSB0aGF0LiI7IH0KICAgICAgICBib2R5ID0gcGN0QmxvY2sockN1ciwgclByZXYucGN0LCAidGhlIDcgZGF5cyBiZWZvcmUiLCAiTGFzdCA3IGxvZ2dlZCBkYXlzIiwgbm90ZSk7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHZhciBiYXNlID0ga3Muc2xpY2UoMCw3KTsKICAgICAgdmFyIGxhdGVzdCA9IGtzLnNsaWNlKC03KTsKICAgICAgdmFyIGxDdXIgPSBnb29kRGF5cyhsYXRlc3QpOwogICAgICB2YXIgbEJhc2UgPSBnb29kRGF5cyhiYXNlKTsKICAgICAgaWYobiA8IDE0KXsKICAgICAgICBub3RlID0gIllvdXIgbGF0ZXN0IHdlZWsgc3RpbGwgb3ZlcmxhcHMgeW91ciBiYXNlbGluZSB3ZWVrLiBJdCBzZXBhcmF0ZXMgZnVsbHkgYXQgMTQgbG9nZ2VkIGRheXMuIjsKICAgICAgfQogICAgICBib2R5ID0gcGN0QmxvY2sobEN1ciwgbEJhc2UucGN0LCAieW91ciBmaXJzdCB3ZWVrIiwgIkxhdGVzdCB3ZWVrIiwgbm90ZSk7CiAgICB9CgogICAgdmFyIHQxID0gc3RhdGUuaGVyb01vZGUgPT09ICJiYXNlbGluZSIgPyAiIGlzLXNlbCIgOiAiIjsKICAgIHZhciB0MiA9IHN0YXRlLmhlcm9Nb2RlID09PSAicm9sbGluZyIgPyAiIGlzLXNlbCIgOiAiIjsKICAgIHZhciB0b2dnbGUgPSAnPGRpdiBjbGFzcz0iZ3J0LXRvZ2dsZSIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IkNvbXBhcmlzb24gYmFzaXMiPicgKwogICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJncnQtaG0nK3QxKyciIGRhdGEtbW9kZT0iYmFzZWxpbmUiPnZzIGZpcnN0IHdlZWs8L2J1dHRvbj4nICsKICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZ3J0LWhtJyt0MisnIiBkYXRhLW1vZGU9InJvbGxpbmciPnZzIHByZXZpb3VzIDcgZGF5czwvYnV0dG9uPicgKwogICAgICAnPC9kaXY+JzsKCiAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImdydC1oZXJvIj4nICsgYm9keSArIHRvZ2dsZSArICc8L2Rpdj4nOwogIH0KCiAgZnVuY3Rpb24gdXBncmFkZUhUTUwoKXsKICAgIGlmKHN0YXRlLnVwZ3JhZGVEaXNtaXNzZWQpeyByZXR1cm4gIiI7IH0KICAgIHZhciBrcyA9IGxvZ2dlZEtleXMoKTsKICAgIGlmKGtzLmxlbmd0aCA8IDMpeyByZXR1cm4gIiI7IH0KICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZ3J0LXVwZ3JhZGUiPicgKwogICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJncnQtZGlzbWlzcyIgaWQ9ImdydFVwRGlzbWlzcyIgYXJpYS1sYWJlbD0iSGlkZSB0aGlzIj5cdTAwZDc8L2J1dHRvbj4nICsKICAgICAgJzxoNT5LZWVwIHRoaXMgaGlzdG9yeSBmb3IgZ29vZDwvaDU+JyArCiAgICAgICc8cD5UaGVzZSBsb2dzIGxpdmUgaW4gdGhpcyBicm93c2VyLCBvbiB0aGlzIGRldmljZS4gQ2xlYXIgeW91ciBicm93c2luZyBkYXRhIGFuZCB0aGV5XHUyMDE5cmUgZ29uZS4gQSBCb256YSBhY2NvdW50IHdpbGwga2VlcCAnK2RvZ1Bvc3Nlc3NpdmUoKSsnIGZ1bGwgaGlzdG9yeSBzYWZlLCBzeW5jIGl0IGFjcm9zcyB5b3VyIHBob25lIGFuZCBsYXB0b3AsIGFuZCBsZXQgeW91IGFzayBxdWVzdGlvbnMgb2YgeW91ciBvd24gZGF0YS4gV2VcdTIwMTlsbCBlbWFpbCB5b3UgdGhlIG1vbWVudCBpdFx1MjAxOXMgcmVhZHkuPC9wPicgKwogICAgICAnPC9kaXY+JzsKICB9CgogIGZ1bmN0aW9uIHJpbmdIVE1MKCl7CiAgICB2YXIga3MgPSBsb2dnZWRLZXlzKCk7CiAgICB2YXIgbG9nZ2VkID0ga3MubGVuZ3RoOwogICAgdmFyIGRuID0gZGF5TnVtYmVyKHRvZGF5S2V5KCkpOwogICAgdmFyIHBjdCA9IE1hdGgubWluKDEsIGxvZ2dlZCAvIENGRy5yZXNldERheXMpOwogICAgdmFyIHIgPSAzOCwgYyA9IDIgKiBNYXRoLlBJICogcjsKICAgIHZhciBkYXNoID0gKGMgKiBwY3QpLnRvRml4ZWQoMSkgKyAiICIgKyBjLnRvRml4ZWQoMSk7CiAgICB2YXIgbGluZTI7CiAgICBpZihkbiA+IENGRy5yZXNldERheXMpewogICAgICBsaW5lMiA9ICJZb3VyIDMwIGRheXMgYXJlIHVwLiBSZWFzc2VzcyBhZ2FpbnN0IFdlZWsgMSBcdTIwMTQgYW5kIGtlZXAgdGhlIGhhYml0cyB0aGF0IHdvcmtlZC4iOwogICAgfSBlbHNlIHsKICAgICAgbGluZTIgPSAiRGF5ICIrZG4rIiBvZiAiK0NGRy5yZXNldERheXMrIiBcdTAwYjcgV2VlayAiK3dlZWtPZihkbikrIjogIitXRUVLU1t3ZWVrT2YoZG4pLTFdLnQ7CiAgICB9CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImdydC1yaW5nd3JhcCI+JyArCiAgICAgICc8c3ZnIGNsYXNzPSJncnQtcmluZyIgdmlld0JveD0iMCAwIDkyIDkyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAgICc8Y2lyY2xlIGN4PSI0NiIgY3k9IjQ2IiByPSInK3IrJyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIiK1BBTC50cmFjaysiIiBzdHJva2Utd2lkdGg9IjkiPjwvY2lyY2xlPicgKwogICAgICAnPGNpcmNsZSBjeD0iNDYiIGN5PSI0NiIgcj0iJytyKyciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIitQQUwuZ3JlZW4rIiIgc3Ryb2tlLXdpZHRoPSI5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1kYXNoYXJyYXk9IicrZGFzaCsnIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAgNDYgNDYpIj48L2NpcmNsZT4nICsKICAgICAgJzx0ZXh0IHg9IjQ2IiB5PSI1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOSIgZm9udC13ZWlnaHQ9IjgwMCIgZmlsbD0iIitQQUwuZ3JlZW5EZWVwKyIiPicrbG9nZ2VkKyc8L3RleHQ+JyArCiAgICAgICc8dGV4dCB4PSI0NiIgeT0iNjMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iOSIgZmlsbD0iIitQQUwubXV0ZWQrIiI+b2YgMzA8L3RleHQ+JyArCiAgICAgICc8L3N2Zz4nICsKICAgICAgJzxkaXYgY2xhc3M9ImdydC1yaW5ndGV4dCI+JyArCiAgICAgICc8cCBjbGFzcz0iZ3J0LXJ0MSI+Jytsb2dnZWQrJyAnKyhsb2dnZWQ9PT0xPyJkYXkiOiJkYXlzIikrJyBsb2dnZWQ8L3A+JyArCiAgICAgICc8cCBjbGFzcz0iZ3J0LXJ0MiI+Jytlc2MobGluZTIpKyc8L3A+JyArCiAgICAgICc8L2Rpdj48L2Rpdj4nOwogIH0KCiAgZnVuY3Rpb24gd2Vla3NIVE1MKCl7CiAgICB2YXIga3MgPSBsb2dnZWRLZXlzKCk7CiAgICB2YXIgY291bnRzID0gWzAsMCwwLDBdLCBmbGFyZXMgPSBbMCwwLDAsMF0sIGdvb2QgPSBbMCwwLDAsMF07CiAgICBmb3IodmFyIGk9MDtpPGtzLmxlbmd0aDtpKyspewogICAgICB2YXIgZG4gPSBkYXlOdW1iZXIoa3NbaV0pOwogICAgICBpZihkbiA8IDEgfHwgZG4gPiBDRkcucmVzZXREYXlzKXsgY29udGludWU7IH0KICAgICAgdmFyIHcgPSB3ZWVrT2YoZG4pIC0gMTsKICAgICAgY291bnRzW3ddKys7CiAgICAgIHZhciBlID0gc3RhdGUuZW50cmllc1trc1tpXV07CiAgICAgIGlmKGUuZmxhcmUgPT09ICJ5ZXMiKXsgZmxhcmVzW3ddKys7IH0KICAgICAgaWYoSEVBTFRIWS5pbmRleE9mKGUuc3Rvb2wpID4gLTEpeyBnb29kW3ddKys7IH0KICAgIH0KICAgIHZhciBjdXJXID0gd2Vla09mKGRheU51bWJlcih0b2RheUtleSgpKSk7CiAgICB2YXIgb3V0ID0gJzxoNT5Zb3VyIGZvdXIgcmVzZXQgd2Vla3M8L2g1PjxwIGNsYXNzPSJncnQtY2FyZGhpbnQiPlN0cmFpZ2h0IGZyb20gdGhlIGVCb29rIHByb3RvY29sLiBXZWVrIDEgaXMgdGhlIGJhc2VsaW5lIGV2ZXJ5dGhpbmcgZWxzZSBpcyBtZWFzdXJlZCBhZ2FpbnN0LjwvcD48ZGl2IGNsYXNzPSJncnQtd2Vla3MiPic7CiAgICBmb3IodmFyIHcyPTA7IHcyPDQ7IHcyKyspewogICAgICB2YXIgaXNOb3cgPSAodzIrMSA9PT0gY3VyVyAmJiBkYXlOdW1iZXIodG9kYXlLZXkoKSkgPD0gQ0ZHLnJlc2V0RGF5cykgPyAiIGlzLW5vdyIgOiAiIjsKICAgICAgdmFyIGRldGFpbCA9IGNvdW50c1t3Ml0gPyAoY291bnRzW3cyXSsiLzcgbG9nZ2VkIFx1MDBiNyAiKyhjb3VudHNbdzJdID8gTWF0aC5yb3VuZChnb29kW3cyXS9jb3VudHNbdzJdKjEwMCkgOiAwKSsiJSBnb29kIikgOiAibm90IHN0YXJ0ZWQiOwogICAgICBvdXQgKz0gJzxkaXYgY2xhc3M9ImdydC13ZWVrJytpc05vdysnIj48c3BhbiBjbGFzcz0iZ3J0LXdrIj5XJysodzIrMSkrJzwvc3Bhbj48c3BhbiBjbGFzcz0iZ3J0LXd0Ij4nK2VzYyhXRUVLU1t3Ml0udCkrJzwvc3Bhbj48c3BhbiBjbGFzcz0iZ3J0LXd0Ij4nK2VzYyhkZXRhaWwpKyc8L3NwYW4+PC9kaXY+JzsKICAgIH0KICAgIG91dCArPSAiPC9kaXY+IjsKICAgIHJldHVybiBvdXQ7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGNoYXJ0cyAtLS0tLS0tLS0tICovCgogIC8qIFRoZSB0cmVuZCBjaGFydHMgdXNlIGEgNjAwLXVuaXQgdmlld0JveCBzY2FsZWQgdG8gZml0IHRoZSBjYXJkLCBzbyBvbiBhIHBob25lCiAgICAgZXZlcnl0aGluZyBpbnNpZGUgc2hyaW5rcyB3aXRoIGl0IC0gYSAxMC11bml0IGF4aXMgbGFiZWwgbGFuZHMgYXQgYWJvdXQgNXB4IG9uCiAgICAgYSAzOTBweCBzY3JlZW4uIEZTQ0FMRSBpcyB0aGUgaW52ZXJzZSBvZiB0aGF0IGRpc3BsYXkgc2NhbGUsIGFwcGxpZWQgdG8gdGV4dCwKICAgICBkb3QgcmFkaWkgYW5kIGRhdGEtbGluZSB3ZWlnaHRzIHNvIHRoZXkgaG9sZCBhIGNvbnN0YW50IHBoeXNpY2FsIHNpemUuIFRoZSByaW5nCiAgICAgaXMgZGVsaWJlcmF0ZWx5IGV4Y2x1ZGVkOiBpdCByZW5kZXJzIGF0IGEgZml4ZWQgOTJweCBhbmQgbmV2ZXIgc2NhbGVzLiAqLwogIHZhciBGU0NBTEUgPSAxOwoKICBmdW5jdGlvbiBmc3oobil7IHJldHVybiBNYXRoLnJvdW5kKG4gKiBGU0NBTEUgKiAxMCkgLyAxMDsgfQoKICBmdW5jdGlvbiBjaGFydFNjYWxlKCl7CiAgICB2YXIgdyA9IDA7CiAgICB0cnl7CiAgICAgIHZhciBzbG90ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydENoYXJ0c1Nsb3QiKTsKICAgICAgaWYoc2xvdCAmJiBzbG90LmNsaWVudFdpZHRoKXsgdyA9IHNsb3QuY2xpZW50V2lkdGggLSAzODsgfQogICAgICBlbHNlIGlmKHJvb3QgJiYgcm9vdC5jbGllbnRXaWR0aCl7IHcgPSByb290LmNsaWVudFdpZHRoIC0gNzQ7IH0KICAgIH1jYXRjaChlKXt9CiAgICBpZighdyB8fCB3IDwgMTQwKXsgcmV0dXJuIDE7IH0KICAgIHZhciBzYyA9IDYwMCAvIHc7CiAgICBpZihzYyA8IDEpeyBzYyA9IDE7IH0KICAgIGlmKHNjID4gMi40KXsgc2MgPSAyLjQ7IH0KICAgIHJldHVybiBzYzsKICB9CgoKICBmdW5jdGlvbiBzdG9vbENoYXJ0SFRNTCgpewogICAgdmFyIGtzID0gbG9nZ2VkS2V5cygpOwogICAgdmFyIHB0cyA9IFtdOwogICAgZm9yKHZhciBpPTA7aTxrcy5sZW5ndGg7aSsrKXsKICAgICAgdmFyIGRuID0gZGF5TnVtYmVyKGtzW2ldKTsKICAgICAgaWYoZG4gPCAxIHx8IGRuID4gQ0ZHLnJlc2V0RGF5cyl7IGNvbnRpbnVlOyB9CiAgICAgIHB0cy5wdXNoKHsgZDpkbiwgZzpzdGF0ZS5lbnRyaWVzW2tzW2ldXS5zdG9vbCB9KTsKICAgIH0KICAgIGlmKHB0cy5sZW5ndGggPCAyKXsKICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJncnQtY2FyZCI+PGg1PlN0b29sIHNjb3JlIG92ZXIgdGhlIHJlc2V0PC9oNT48cCBjbGFzcz0iZ3J0LWVtcHR5Ij5Ud28gbG9nZ2VkIGRheXMgYW5kIHRoaXMgY2hhcnQgYXBwZWFycy48L3A+PC9kaXY+JzsKICAgIH0KCiAgICB2YXIgVyA9IDYwMCwgSCA9IDIxMCwgcGFkTCA9IDMwLCBwYWRSID0gMTIsIHBhZFQgPSAxNCwgcGFkQiA9IDI2OwogICAgdmFyIHB3ID0gVyAtIHBhZEwgLSBwYWRSLCBwaCA9IEggLSBwYWRUIC0gcGFkQjsKICAgIGZ1bmN0aW9uIFgoZCl7IHJldHVybiBwYWRMICsgKGQtMSkvKENGRy5yZXNldERheXMtMSkgKiBwdzsgfQogICAgZnVuY3Rpb24gWShnKXsgcmV0dXJuIHBhZFQgKyAoZy0xKS82ICogcGg7IH0KCiAgICB2YXIgcyA9ICc8c3ZnIGNsYXNzPSJncnQtY2hhcnQiIHZpZXdCb3g9IjAgMCAnK1crJyAnK0grJyIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJTdG9vbCBzY29yZSBmb3IgZWFjaCBsb2dnZWQgZGF5IG9mIHRoZSAzMC1kYXkgcmVzZXQiPic7CiAgICBzICs9ICc8cmVjdCB4PSInK3BhZEwrJyIgeT0iJytZKDIpLnRvRml4ZWQoMSkrJyIgd2lkdGg9IicrcHcrJyIgaGVpZ2h0PSInKyhZKDMpLVkoMikpLnRvRml4ZWQoMSkrJyIgZmlsbD0iIitQQUwudGludCsiIj48L3JlY3Q+JzsKICAgIHMgKz0gJzx0ZXh0IHg9IicrKHBhZEwrNikrJyIgeT0iJysoWSgyKSsxMykudG9GaXhlZCgxKSsnIiBmb250LXNpemU9IicrZnN6KDEwKSsnIiBmb250LXdlaWdodD0iNzAwIiBmaWxsPSIiK1BBTC5ncmVlbisiIj5oZWFsdGh5IHJhbmdlPC90ZXh0Pic7CgogICAgZm9yKHZhciBnPTE7IGc8PTc7IGcrKyl7CiAgICAgIHMgKz0gJzxsaW5lIHgxPSInK3BhZEwrJyIgeTE9IicrWShnKS50b0ZpeGVkKDEpKyciIHgyPSInKyhXLXBhZFIpKyciIHkyPSInK1koZykudG9GaXhlZCgxKSsnIiBzdHJva2U9IiIrUEFMLnRyYWNrKyIiIHN0cm9rZS13aWR0aD0iMSI+PC9saW5lPic7CiAgICAgIHMgKz0gJzx0ZXh0IHg9IicrKHBhZEwtOCkrJyIgeT0iJysoWShnKSs0KS50b0ZpeGVkKDEpKyciIGZvbnQtc2l6ZT0iJytmc3ooMTApKyciIGZpbGw9IiIrUEFMLm11dGVkKyIiIHRleHQtYW5jaG9yPSJlbmQiPicrZysnPC90ZXh0Pic7CiAgICB9CiAgICBmb3IodmFyIHdrPTE7IHdrPD00OyB3aysrKXsKICAgICAgdmFyIHhkID0gWCh3ayo3ICsgMSk7CiAgICAgIGlmKHdrIDwgNCl7CiAgICAgICAgcyArPSAnPGxpbmUgeDE9IicreGQudG9GaXhlZCgxKSsnIiB5MT0iJytwYWRUKyciIHgyPSInK3hkLnRvRml4ZWQoMSkrJyIgeTI9IicrKHBhZFQrcGgpKyciIHN0cm9rZT0iIitQQUwuZGl2aWRlcisiIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1kYXNoYXJyYXk9IjMgMyI+PC9saW5lPic7CiAgICAgIH0KICAgICAgcyArPSAnPHRleHQgeD0iJysoWCgod2stMSkqNysxKSs0KS50b0ZpeGVkKDEpKyciIHk9IicrKEgtOCkrJyIgZm9udC1zaXplPSInK2ZzeigxMCkrJyIgZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIitQQUwubXV0ZWQrIiI+Vycrd2srJzwvdGV4dD4nOwogICAgfQoKICAgIHZhciBkcGF0aCA9ICIiOwogICAgZm9yKHZhciBwPTA7cDxwdHMubGVuZ3RoO3ArKyl7CiAgICAgIGRwYXRoICs9IChwPT09MCA\/ICJNIiA6ICJMIikgKyBYKHB0c1twXS5kKS50b0ZpeGVkKDEpICsgIiAiICsgWShwdHNbcF0uZykudG9GaXhlZCgxKSArICIgIjsKICAgIH0KICAgIHMgKz0gJzxwYXRoIGQ9IicrZHBhdGgrJyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIiK1BBTC5ncmVlbkRlZXArIiIgc3Ryb2tlLXdpZHRoPSInK2ZzeigyKSsnIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbGluZWNhcD0icm91bmQiPjwvcGF0aD4nOwogICAgZm9yKHZhciBxPTA7cTxwdHMubGVuZ3RoO3ErKyl7CiAgICAgIHZhciBoZWFsdGh5ID0gSEVBTFRIWS5pbmRleE9mKHB0c1txXS5nKSA+IC0xOwogICAgICBzICs9ICc8Y2lyY2xlIGN4PSInK1gocHRzW3FdLmQpLnRvRml4ZWQoMSkrJyIgY3k9IicrWShwdHNbcV0uZykudG9GaXhlZCgxKSsnIiByPSInK2Zzeig0KSsnIiBmaWxsPSInKyhoZWFsdGh5ID8gUEFMLmdyZWVuIDogUEFMLnBhcGVyKSsnIiBzdHJva2U9IicrUEFMLmdyZWVuRGVlcCsnIiBzdHJva2Utd2lkdGg9IicrZnN6KDIpKyciPjwvY2lyY2xlPic7CiAgICB9CiAgICBzICs9ICI8L3N2Zz4iOwoKICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZ3J0LWNhcmQiPjxoNT5TdG9vbCBzY29yZSBvdmVyIHRoZSByZXNldDwvaDU+PHAgY2xhc3M9ImdydC1jYXJkaGludCI+TG93ZXIgaXMgZmlybWVyLiBUaGUgZ3JlZW4gYmFuZCBpcyBncmFkZXMgMiB0byAzIFx1MjAxNCB3aGVyZSB5b3Ugd2FudCBtb3N0IGRheXMgdG8gbGFuZC48L3A+JytzKyc8L2Rpdj4nOwogIH0KCiAgZnVuY3Rpb24gd2Vla0JhcnNIVE1MKCl7CiAgICB2YXIga3MgPSBsb2dnZWRLZXlzKCk7CiAgICB2YXIgY291bnRzID0gWzAsMCwwLDBdLCBnb29kID0gWzAsMCwwLDBdLCBmbGFyZXMgPSBbMCwwLDAsMF07CiAgICBmb3IodmFyIGk9MDtpPGtzLmxlbmd0aDtpKyspewogICAgICB2YXIgZG4gPSBkYXlOdW1iZXIoa3NbaV0pOwogICAgICBpZihkbiA8IDEgfHwgZG4gPiBDRkcucmVzZXREYXlzKXsgY29udGludWU7IH0KICAgICAgdmFyIHcgPSB3ZWVrT2YoZG4pLTE7CiAgICAgIGNvdW50c1t3XSsrOwogICAgICB2YXIgZSA9IHN0YXRlLmVudHJpZXNba3NbaV1dOwogICAgICBpZihIRUFMVEhZLmluZGV4T2YoZS5zdG9vbCkgPiAtMSl7IGdvb2Rbd10rKzsgfQogICAgICBpZihlLmZsYXJlID09PSAieWVzIil7IGZsYXJlc1t3XSsrOyB9CiAgICB9CiAgICB2YXIgYW55ID0gY291bnRzWzBdK2NvdW50c1sxXStjb3VudHNbMl0rY291bnRzWzNdOwogICAgaWYoIWFueSl7CiAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZ3J0LWNhcmQiPjxoNT5Hb29kIGRheXMgYW5kIGZsYXJlLXVwcyBieSB3ZWVrPC9oNT48cCBjbGFzcz0iZ3J0LWVtcHR5Ij5Mb2cgYSBmZXcgZGF5cyBhbmQgeW91ciB3ZWVrbHkgY29tcGFyaXNvbiBzdGFydHMgaGVyZS48L3A+PC9kaXY+JzsKICAgIH0KCiAgICB2YXIgVyA9IDYwMCwgSCA9IDIwMCwgcGFkVCA9IDE2LCBwYWRCID0gNDQsIHBhZEwgPSAzNCwgcGFkUiA9IDEyOwogICAgdmFyIHBoID0gSCAtIHBhZFQgLSBwYWRCLCBwdyA9IFcgLSBwYWRMIC0gcGFkUjsKICAgIHZhciBzbG90ID0gcHcvNDsKICAgIHZhciBzID0gJzxzdmcgY2xhc3M9ImdydC1jaGFydCIgdmlld0JveD0iMCAwICcrVysnICcrSCsnIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IlBlcmNlbnRhZ2Ugb2YgZ29vZCBkYXlzIGluIGVhY2ggcmVzZXQgd2VlayI+JzsKICAgIHZhciBsZXZlbHMgPSBbMCwyNSw1MCw3NSwxMDBdOwogICAgZm9yKHZhciBsPTA7bDxsZXZlbHMubGVuZ3RoO2wrKyl7CiAgICAgIHZhciB5ID0gcGFkVCArIHBoIC0gKGxldmVsc1tsXS8xMDApKnBoOwogICAgICBzICs9ICc8bGluZSB4MT0iJytwYWRMKyciIHkxPSInK3kudG9GaXhlZCgxKSsnIiB4Mj0iJysoVy1wYWRSKSsnIiB5Mj0iJyt5LnRvRml4ZWQoMSkrJyIgc3Ryb2tlPSIiK1BBTC50cmFjaysiIiBzdHJva2Utd2lkdGg9IjEiPjwvbGluZT4nOwogICAgICBzICs9ICc8dGV4dCB4PSInKyhwYWRMLTgpKyciIHk9IicrKHkrNCkudG9GaXhlZCgxKSsnIiBmb250LXNpemU9IicrZnN6KDEwKSsnIiBmaWxsPSIiK1BBTC5tdXRlZCsiIiB0ZXh0LWFuY2hvcj0iZW5kIj4nK2xldmVsc1tsXSsnPC90ZXh0Pic7CiAgICB9CiAgICBmb3IodmFyIGI9MDtiPDQ7YisrKXsKICAgICAgdmFyIGN4ID0gcGFkTCArIHNsb3QqYiArIHNsb3QvMjsKICAgICAgdmFyIGJ3ID0gTWF0aC5taW4oNjQsIHNsb3QqMC41NSk7CiAgICAgIGlmKGNvdW50c1tiXSl7CiAgICAgICAgdmFyIHBjdCA9IE1hdGgucm91bmQoZ29vZFtiXS9jb3VudHNbYl0qMTAwKTsKICAgICAgICB2YXIgYmggPSAocGN0LzEwMCkqcGg7CiAgICAgICAgaWYoYmggPCAyKXsgYmggPSAyOyB9CiAgICAgICAgcyArPSAnPHJlY3QgeD0iJysoY3gtYncvMikudG9GaXhlZCgxKSsnIiB5PSInKyhwYWRUK3BoLWJoKS50b0ZpeGVkKDEpKyciIHdpZHRoPSInK2J3LnRvRml4ZWQoMSkrJyIgaGVpZ2h0PSInK2JoLnRvRml4ZWQoMSkrJyIgcng9IjQiIGZpbGw9IiIrUEFMLmdyZWVuKyIiPjwvcmVjdD4nOwogICAgICAgIHMgKz0gJzx0ZXh0IHg9IicrY3gudG9GaXhlZCgxKSsnIiB5PSInKyhwYWRUK3BoLWJoLTYpLnRvRml4ZWQoMSkrJyIgZm9udC1zaXplPSInK2ZzeigxMikrJyIgZm9udC13ZWlnaHQ9IjgwMCIgZmlsbD0iIitQQUwuZ3JlZW5EZWVwKyIiIHRleHQtYW5jaG9yPSJtaWRkbGUiPicrcGN0KyclPC90ZXh0Pic7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcyArPSAnPHRleHQgeD0iJytjeC50b0ZpeGVkKDEpKyciIHk9IicrKHBhZFQrcGgtOCkrJyIgZm9udC1zaXplPSInK2ZzeigxMCkrJyIgZmlsbD0iIitQQUwubXV0ZWQrIiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+bm8gZGF0YTwvdGV4dD4nOwogICAgICB9CiAgICAgIHMgKz0gJzx0ZXh0IHg9IicrY3gudG9GaXhlZCgxKSsnIiB5PSInKyhwYWRUK3BoKzE4KSsnIiBmb250LXNpemU9IicrZnN6KDExKSsnIiBmb250LXdlaWdodD0iODAwIiBmaWxsPSIiK1BBTC5pbmsrIiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+V2VlayAnKyhiKzEpKyc8L3RleHQ+JzsKICAgICAgdmFyIGZsID0gZmxhcmVzW2JdID09PSAxID8gIjEgZmxhcmUtdXAiIDogKGZsYXJlc1tiXSsiIGZsYXJlLXVwcyIpOwogICAgICBzICs9ICc8dGV4dCB4PSInK2N4LnRvRml4ZWQoMSkrJyIgeT0iJysocGFkVCtwaCszMykrJyIgZm9udC1zaXplPSInK2ZzeigxMCkrJyIgZmlsbD0iJysoZmxhcmVzW2JdID8gUEFMLmFtYmVyRGVlcCA6IFBBTC5tdXRlZCkrJyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+JytmbCsnPC90ZXh0Pic7CiAgICB9CiAgICBzICs9ICc8bGluZSB4MT0iJytwYWRMKyciIHkxPSInKyhwYWRUK3BoKSsnIiB4Mj0iJysoVy1wYWRSKSsnIiB5Mj0iJysocGFkVCtwaCkrJyIgc3Ryb2tlPSIiK1BBTC5kaXZpZGVyKyIiIHN0cm9rZS13aWR0aD0iMSI+PC9saW5lPic7CiAgICBzICs9ICI8L3N2Zz4iOwogICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJncnQtY2FyZCI+PGg1Pkdvb2QgZGF5cyBhbmQgZmxhcmUtdXBzIGJ5IHdlZWs8L2g1PjxwIGNsYXNzPSJncnQtY2FyZGhpbnQiPlBlcmNlbnRhZ2Ugb2YgdGhhdCB3ZWVrXHUyMDE5cyBsb2dnZWQgZGF5cyBsYW5kaW5nIGluIGdyYWRlcyAyIHRvIDMuPC9wPicrcysnPC9kaXY+JzsKICB9CgogIGZ1bmN0aW9uIHdlaWdodENoYXJ0SFRNTCgpewogICAgdmFyIGtzID0gW107CiAgICBmb3IodmFyIGsgaW4gc3RhdGUud2VpZ2h0cyl7IGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS53ZWlnaHRzLGspKXsga3MucHVzaChrKTsgfSB9CiAgICBrcy5zb3J0KCk7CiAgICBpZihrcy5sZW5ndGggPCAyKXsKICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJncnQtY2FyZCI+PGg1PldlaWdodDwvaDU+PHAgY2xhc3M9ImdydC1lbXB0eSI+TG9nIGEgd2VpZ2h0IG9uIHR3byBzZXBhcmF0ZSBkYXlzIHRvIHNlZSB0aGUgbGluZS4gV2Vla2x5IGlzIHBsZW50eS48L3A+PC9kaXY+JzsKICAgIH0KICAgIHZhciB2YWxzID0gW10sIG1pbiA9IEluZmluaXR5LCBtYXggPSAtSW5maW5pdHk7CiAgICBmb3IodmFyIGk9MDtpPGtzLmxlbmd0aDtpKyspewogICAgICB2YXIgdiA9IHN0YXRlLndlaWdodHNba3NbaV1dOwogICAgICB2YWxzLnB1c2goeyBkOiBkYXlOdW1iZXIoa3NbaV0pLCB2OiB2IH0pOwogICAgICBpZih2IDwgbWluKXsgbWluID0gdjsgfQogICAgICBpZih2ID4gbWF4KXsgbWF4ID0gdjsgfQogICAgfQogICAgdmFyIHNwYW4gPSBtYXggLSBtaW47CiAgICBpZihzcGFuIDwgMC40KXsgbWluIC09IDAuMjsgbWF4ICs9IDAuMjsgc3BhbiA9IG1heCAtIG1pbjsgfQogICAgZWxzZSB7IG1pbiAtPSBzcGFuKjAuMTU7IG1heCArPSBzcGFuKjAuMTU7IHNwYW4gPSBtYXggLSBtaW47IH0KCiAgICB2YXIgVyA9IDYwMCwgSCA9IDE4MCwgcGFkTCA9IDQwLCBwYWRSID0gMTIsIHBhZFQgPSAxNCwgcGFkQiA9IDI2OwogICAgdmFyIHB3ID0gVyAtIHBhZEwgLSBwYWRSLCBwaCA9IEggLSBwYWRUIC0gcGFkQjsKICAgIHZhciBsYXN0RGF5ID0gTWF0aC5tYXgoQ0ZHLnJlc2V0RGF5cywgdmFsc1t2YWxzLmxlbmd0aC0xXS5kKTsKICAgIGZ1bmN0aW9uIFgoZCl7IHJldHVybiBwYWRMICsgKGQtMSkvKGxhc3REYXktMSkgKiBwdzsgfQogICAgZnVuY3Rpb24gWSh2KXsgcmV0dXJuIHBhZFQgKyAoMSAtICh2LW1pbikvc3BhbikgKiBwaDsgfQoKICAgIHZhciBzID0gJzxzdmcgY2xhc3M9ImdydC1jaGFydCIgdmlld0JveD0iMCAwICcrVysnICcrSCsnIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IldlaWdodCBvdmVyIHRoZSByZXNldCI+JzsKICAgIGZvcih2YXIgdD0wO3Q8Mzt0KyspewogICAgICB2YXIgdnYgPSBtaW4gKyBzcGFuKih0LzIpOwogICAgICB2YXIgeSA9IFkodnYpOwogICAgICBzICs9ICc8bGluZSB4MT0iJytwYWRMKyciIHkxPSInK3kudG9GaXhlZCgxKSsnIiB4Mj0iJysoVy1wYWRSKSsnIiB5Mj0iJyt5LnRvRml4ZWQoMSkrJyIgc3Ryb2tlPSIiK1BBTC50cmFjaysiIiBzdHJva2Utd2lkdGg9IjEiPjwvbGluZT4nOwogICAgICBzICs9ICc8dGV4dCB4PSInKyhwYWRMLTgpKyciIHk9IicrKHkrNCkudG9GaXhlZCgxKSsnIiBmb250LXNpemU9IicrZnN6KDEwKSsnIiBmaWxsPSIiK1BBTC5tdXRlZCsiIiB0ZXh0LWFuY2hvcj0iZW5kIj4nK3Z2LnRvRml4ZWQoMSkrJzwvdGV4dD4nOwogICAgfQogICAgdmFyIGRwID0gIiI7CiAgICBmb3IodmFyIHA9MDtwPHZhbHMubGVuZ3RoO3ArKyl7IGRwICs9IChwPT09MD8iTSI6IkwiKSArIFgodmFsc1twXS5kKS50b0ZpeGVkKDEpICsgIiAiICsgWSh2YWxzW3BdLnYpLnRvRml4ZWQoMSkgKyAiICI7IH0KICAgIHMgKz0gJzxwYXRoIGQ9IicrZHArJyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIiK1BBTC5ncmVlbkRlZXArIiIgc3Ryb2tlLXdpZHRoPSInK2ZzeigyKSsnIiBzdHJva2UtbGluZWNhcD0icm91bmQiPjwvcGF0aD4nOwogICAgZm9yKHZhciBxPTA7cTx2YWxzLmxlbmd0aDtxKyspewogICAgICBzICs9ICc8Y2lyY2xlIGN4PSInK1godmFsc1txXS5kKS50b0ZpeGVkKDEpKyciIGN5PSInK1kodmFsc1txXS52KS50b0ZpeGVkKDEpKyciIHI9IicrZnN6KDQpKyciIGZpbGw9IiIrUEFMLmdyZWVuRGVlcCsiIj48L2NpcmNsZT4nOwogICAgfQogICAgcyArPSAnPHRleHQgeD0iJytwYWRMKyciIHk9IicrKEgtNikrJyIgZm9udC1zaXplPSInK2ZzeigxMCkrJyIgZmlsbD0iIitQQUwubXV0ZWQrIiI+RGF5IDE8L3RleHQ+JzsKICAgIHMgKz0gJzx0ZXh0IHg9IicrKFctcGFkUikrJyIgeT0iJysoSC02KSsnIiBmb250LXNpemU9IicrZnN6KDEwKSsnIiBmaWxsPSIiK1BBTC5tdXRlZCsiIiB0ZXh0LWFuY2hvcj0iZW5kIj5EYXkgJytsYXN0RGF5Kyc8L3RleHQ+JzsKICAgIHMgKz0gIjwvc3ZnPiI7CiAgICB2YXIgY2hhbmdlID0gdmFsc1t2YWxzLmxlbmd0aC0xXS52IC0gdmFsc1swXS52OwogICAgdmFyIHdvcmQgPSBjaGFuZ2UgPiAwID8gInVwIiA6IChjaGFuZ2UgPCAwID8gImRvd24iIDogImxldmVsIik7CiAgICB2YXIgaGludCA9IGNoYW5nZSA9PT0gMCA\/ICJObyBjaGFuZ2Ugc28gZmFyLiIgOiAod29yZCsiICIrTWF0aC5hYnMoY2hhbmdlKS50b0ZpeGVkKDEpKyIga2cgc2luY2UgeW91ciBmaXJzdCBlbnRyeS4iKTsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZ3J0LWNhcmQiPjxoNT5XZWlnaHQ8L2g1PjxwIGNsYXNzPSJncnQtY2FyZGhpbnQiPicrZXNjKGhpbnQpKycgV2VpZ2h0IGNoYW5nZSBkdXJpbmcgYSByZXNldCBpcyB3b3J0aCBkaXNjdXNzaW5nIHdpdGggeW91ciB2ZXQgaWYgaXQgd2Fzblx1MjAxOXQgdGhlIGdvYWwuPC9wPicrcysnPC9kaXY+JzsKICB9CgogIC8qIC0tLS0tLS0tLS0gcmVuZGVyICsgdGFicyAtLS0tLS0tLS0tICovCgogIGZ1bmN0aW9uIHNldEhUTUwoaWQsIGh0bWwpewogICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgaWYoZWwpeyBlbC5pbm5lckhUTUwgPSBodG1sOyB9CiAgfQoKICBmdW5jdGlvbiByZW5kZXJQcm9ncmVzcygpewogICAgRlNDQUxFID0gY2hhcnRTY2FsZSgpOwogICAgc2V0SFRNTCgiZ3J0VmV0U2xvdCIsIHZldENoZWNrKCkpOwogICAgc2V0SFRNTCgiZ3J0SGVyb1Nsb3QiLCBoZXJvSFRNTCgpKTsKICAgIHNldEhUTUwoImdydFVwZ3JhZGVTbG90IiwgdXBncmFkZUhUTUwoKSk7CiAgICBzZXRIVE1MKCJncnRSaW5nU2xvdCIsIHJpbmdIVE1MKCkpOwogICAgc2V0SFRNTCgiZ3J0V2Vla3NTbG90Iiwgd2Vla3NIVE1MKCkpOwogICAgc2V0SFRNTCgiZ3J0Q2hhcnRzU2xvdCIsIHN0b29sQ2hhcnRIVE1MKCkgKyB3ZWVrQmFyc0hUTUwoKSArIHdlaWdodENoYXJ0SFRNTCgpKTsKCiAgICB2YXIgaG0gPSByb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ncnQtaG0iKTsKICAgIGZvcih2YXIgaT0wO2k8aG0ubGVuZ3RoO2krKyl7CiAgICAgIChmdW5jdGlvbihidG4pewogICAgICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICBzdGF0ZS5oZXJvTW9kZSA9IGJ0bi5nZXRBdHRyaWJ1dGUoImRhdGEtbW9kZSIpOwogICAgICAgICAgc2F2ZSgpOwogICAgICAgICAgcmVuZGVyUHJvZ3Jlc3MoKTsKICAgICAgICB9KTsKICAgICAgfSkoaG1baV0pOwogICAgfQogICAgdmFyIGRpcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncnRVcERpc21pc3MiKTsKICAgIGlmKGRpcyl7CiAgICAgIGRpcy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCl7CiAgICAgICAgc3RhdGUudXBncmFkZURpc21pc3NlZCA9IHRydWU7CiAgICAgICAgc2F2ZSgpOwogICAgICAgIHJlbmRlclByb2dyZXNzKCk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gc2hvd1RhYih3aGljaCl7CiAgICB2YXIgdGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0VGFiTG9nIik7CiAgICB2YXIgdHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0VGFiUHJvZyIpOwogICAgdmFyIHZsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydExvZyIpOwogICAgdmFyIHZwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydFByb2dyZXNzIik7CiAgICBpZighdGwgfHwgIXRwIHx8ICF2bCB8fCAhdnApeyByZXR1cm47IH0KICAgIHZhciBpc0xvZyA9IHdoaWNoID09PSAibG9nIjsKICAgIHRsLmNsYXNzTGlzdC50b2dnbGUoImlzLXNlbCIsIGlzTG9nKTsKICAgIHRwLmNsYXNzTGlzdC50b2dnbGUoImlzLXNlbCIsICFpc0xvZyk7CiAgICB0bC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCBpc0xvZyA\/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAgdHAuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwgaXNMb2cgPyAiZmFsc2UiIDogInRydWUiKTsKICAgIHZsLmhpZGRlbiA9ICFpc0xvZzsKICAgIHZwLmhpZGRlbiA9IGlzTG9nOwogICAgdGwuYmx1cigpOyB0cC5ibHVyKCk7CiAgICBpZighaXNMb2cpeyByZW5kZXJQcm9ncmVzcygpOyB9CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRhdGEgdG9vbHMgLS0tLS0tLS0tLSAqLwoKICBmdW5jdGlvbiBleHBvcnRDU1YoKXsKICAgIHZhciByb3dzID0gW1siZGF0ZSIsInJlc2V0X2RheSIsIndlZWsiLCJzdG9vbF9ncmFkZSIsImVuZXJneSIsImFwcGV0aXRlIiwicmVmdXNlZF9tZWFsIiwiZmxhcmVfdXAiLCJvYnNlcnZhdGlvbnMiLCJ3ZWlnaHRfa2ciXV07CiAgICB2YXIga3MgPSBsb2dnZWRLZXlzKCk7CiAgICB2YXIgc2VlbiA9IHt9OwogICAgZm9yKHZhciBpPTA7aTxrcy5sZW5ndGg7aSsrKXsgc2Vlbltrc1tpXV0gPSB0cnVlOyB9CiAgICBmb3IodmFyIHdrIGluIHN0YXRlLndlaWdodHMpeyBpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RhdGUud2VpZ2h0cyx3aykpeyBzZWVuW3drXSA9IHRydWU7IH0gfQogICAgdmFyIGFsbCA9IFtdOwogICAgZm9yKHZhciBzMiBpbiBzZWVuKXsgaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNlZW4sczIpKXsgYWxsLnB1c2goczIpOyB9IH0KICAgIGFsbC5zb3J0KCk7CiAgICBmb3IodmFyIGo9MDtqPGFsbC5sZW5ndGg7aisrKXsKICAgICAgdmFyIGsgPSBhbGxbal07CiAgICAgIHZhciBlID0gc3RhdGUuZW50cmllc1trXSB8fCB7fTsKICAgICAgdmFyIGRuID0gZGF5TnVtYmVyKGspOwogICAgICByb3dzLnB1c2goWwogICAgICAgIGssIGRuLCB3ZWVrT2YoZG4pLAogICAgICAgICh0eXBlb2YgZS5zdG9vbCA9PT0gIm51bWJlciIgPyBlLnN0b29sIDogIiIpLAogICAgICAgIGUuZW5lcmd5IHx8ICIiLCBlLmFwcGV0aXRlIHx8ICIiLAogICAgICAgIChlLnJlZnVzZWQgPyAieWVzIiA6IChzdGF0ZS5lbnRyaWVzW2tdID8gIm5vIiA6ICIiKSksCiAgICAgICAgZS5mbGFyZSB8fCAiIiwKICAgICAgICAoZS5mbGFncyAmJiBlLmZsYWdzLmxlbmd0aCA\/IGUuZmxhZ3Muam9pbigiIHwgIikgOiAiIiksCiAgICAgICAgKHN0YXRlLndlaWdodHNba10gIT0gbnVsbCA\/IHN0YXRlLndlaWdodHNba10gOiAiIikKICAgICAgXSk7CiAgICB9CiAgICB2YXIgY3N2ID0gcm93cy5tYXAoZnVuY3Rpb24ocil7CiAgICAgIHJldHVybiByLm1hcChmdW5jdGlvbihjKXsKICAgICAgICB2YXIgdiA9IFN0cmluZyhjKTsKICAgICAgICByZXR1cm4gL1siLFxuXS8udGVzdCh2KSA\/ICciJyt2LnJlcGxhY2UoLyIvZywnIiInKSsnIicgOiB2OwogICAgICB9KS5qb2luKCIsIik7CiAgICB9KS5qb2luKCJcbiIpOwoKICAgIHRyeXsKICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbY3N2XSwge3R5cGU6InRleHQvY3N2O2NoYXJzZXQ9dXRmLTg7In0pOwogICAgICB2YXIgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CiAgICAgIGEuaHJlZiA9IHVybDsKICAgICAgYS5kb3dubG9hZCA9ICJib256YS1ndXQtcmVzZXQtIiArIChzdGF0ZS5kb2dOYW1lID8gc3RhdGUuZG9nTmFtZS5yZXBsYWNlKC9bXmEtejAtOV0vZ2ksIi0iKS50b0xvd2VyQ2FzZSgpKyItIiA6ICIiKSArIHRvZGF5S2V5KCkgKyAiLmNzdiI7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGEuY2xpY2soKTsKICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTsKICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpeyBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7IH0sIDUwMCk7CiAgICB9Y2F0Y2goZXJyKXsKICAgICAgd2luZG93LnByb21wdCgiQ29weSB5b3VyIGRhdGE6IiwgY3N2KTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHN0YXJ0T3ZlcigpewogICAgdmFyIG9rID0gd2luZG93LmNvbmZpcm0oIlRoaXMgY2xlYXJzIGV2ZXJ5IGxvZ2dlZCBkYXkgZnJvbSB0aGlzIGJyb3dzZXIgYW5kIGNhbm5vdCBiZSB1bmRvbmUuIERvd25sb2FkIHlvdXIgQ1NWIGZpcnN0IGlmIHlvdSB3YW50IHRvIGtlZXAgaXQuXG5cblN0YXJ0IG92ZXI\/Iik7CiAgICBpZighb2speyByZXR1cm47IH0KICAgIHRyeXsgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKENGRy5ucyk7IH1jYXRjaChlKXt9CiAgICBtZW0gPSBudWxsOwogICAgc3RhdGUgPSBudWxsOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydEFwcCIpLmhpZGRlbiA9IHRydWU7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0R2F0ZSIpLmhpZGRlbiA9IGZhbHNlOwogICAgdmFyIGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydEVtYWlsIik7CiAgICBpZihlbSl7IGVtLnZhbHVlID0gIiI7IH0KICB9CgogIC8qIC0tLS0tLS0tLS0gYm9vdCAtLS0tLS0tLS0tICovCgogIGZ1bmN0aW9uIG9wZW5BcHAoKXsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncnRHYXRlIikuaGlkZGVuID0gdHJ1ZTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncnRBcHAiKS5oaWRkZW4gPSBmYWxzZTsKICAgIGlmKCFzdGF0ZS5zdGFydERhdGUpeyBzdGF0ZS5zdGFydERhdGUgPSB0b2RheUtleSgpOyBzYXZlKCk7IH0KICAgIGlmKGRheXNCZXR3ZWVuKHN0YXRlLnN0YXJ0RGF0ZSwgdG9kYXlLZXkoKSkgPCAwKXsgc3RhdGUuc3RhcnREYXRlID0gdG9kYXlLZXkoKTsgc2F2ZSgpOyB9CiAgICBidWlsZERheVNlbGVjdCgpOwogICAgbG9hZERyYWZ0Rm9yKHNlbGVjdGVkRGF5KCkpOwogICAgc2hvd1RhYigibG9nIik7CiAgfQoKICBmdW5jdGlvbiB3aXJlKCl7CiAgICBpbml0R2F0ZSgpOwogICAgYWRvcHRJMThuKCk7CiAgICBidWlsZEdyYWRlcygpOwogICAgYnVpbGRDaG9pY2UoImdydEVuZXJneSIsIEVORVJHWSwgImVuZXJneSIpOwogICAgYnVpbGRDaG9pY2UoImdydEFwcGV0aXRlIiwgQVBQRVRJVEUsICJhcHBldGl0ZSIpOwogICAgYnVpbGRDaG9pY2UoImdydEZsYXJlIiwgRkxBUkUsICJmbGFyZSIpOwogICAgYnVpbGRGbGFncygpOwoKICAgIHZhciByZWYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0UmVmdXNlZCIpOwogICAgaWYocmVmKXsKICAgICAgcmVmLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKXsKICAgICAgICBkcmFmdC5yZWZ1c2VkID0gIWRyYWZ0LnJlZnVzZWQ7CiAgICAgICAgcmVmLmNsYXNzTGlzdC50b2dnbGUoImlzLXNlbCIsIGRyYWZ0LnJlZnVzZWQpOwogICAgICAgIHJlZi5ibHVyKCk7CiAgICAgIH0pOwogICAgfQogICAgdmFyIHcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0V2VpZ2h0Iik7CiAgICBpZih3KXsgdy5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGZ1bmN0aW9uKCl7IGRyYWZ0LndlaWdodCA9IHcudmFsdWU7IH0pOyB9CgogICAgdmFyIHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncnREYXlTZWwiKTsKICAgIGlmKHNlbCl7IHNlbC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBmdW5jdGlvbigpeyBsb2FkRHJhZnRGb3Ioc2VsLnZhbHVlKTsgc2VsLmJsdXIoKTsgfSk7IH0KCiAgICB2YXIgc3YgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3J0U2F2ZSIpOwogICAgaWYoc3YpeyBzdi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHNhdmVEYXkpOyB9CgogICAgdmFyIHRsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydFRhYkxvZyIpOwogICAgdmFyIHRwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydFRhYlByb2ciKTsKICAgIGlmKHRsKXsgdGwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpeyBzaG93VGFiKCJsb2ciKTsgfSk7IH0KICAgIGlmKHRwKXsgdHAuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpeyBzaG93VGFiKCJwcm9nIik7IH0pOyB9CgogICAgdmFyIGV4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydEV4cG9ydCIpOwogICAgaWYoZXgpeyBleC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGV4cG9ydENTVik7IH0KICAgIHZhciBycyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncnRSZXNldCIpOwogICAgaWYocnMpeyBycy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHN0YXJ0T3Zlcik7IH0KCiAgICBkcmFmdCA9IG5ld0RyYWZ0KCk7CgogICAgdmFyIHJ6VGltZXIgPSBudWxsOwogICAgdHJ5ewogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgZnVuY3Rpb24oKXsKICAgICAgICBpZihyelRpbWVyKXsgY2xlYXJUaW1lb3V0KHJ6VGltZXIpOyB9CiAgICAgICAgcnpUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgIHRyeXsKICAgICAgICAgICAgdmFyIHZwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdydFByb2dyZXNzIik7CiAgICAgICAgICAgIGlmKHN0YXRlICYmIHZwICYmICF2cC5oaWRkZW4peyByZW5kZXJQcm9ncmVzcygpOyB9CiAgICAgICAgICB9Y2F0Y2goZSl7fQogICAgICAgIH0sIDI1MCk7CiAgICAgIH0pOwogICAgfWNhdGNoKGUpe30KCiAgICBzdG9yYWdlT0sgPSB0ZXN0U3RvcmFnZSgpOwogICAgaWYoIXN0b3JhZ2VPSyl7IHNob3dTdG9yYWdlV2FybigpOyB9CgogICAgdmFyIHNhdmVkID0gbG9hZCgpOwogICAgaWYoc2F2ZWQgJiYgc2F2ZWQuZW1haWwpewogICAgICBzdGF0ZSA9IHNhdmVkOwogICAgICBpZighc3RhdGUuZW50cmllcyl7IHN0YXRlLmVudHJpZXMgPSB7fTsgfQogICAgICBpZighc3RhdGUud2VpZ2h0cyl7IHN0YXRlLndlaWdodHMgPSB7fTsgfQogICAgICBpZighc3RhdGUuaGVyb01vZGUpeyBzdGF0ZS5oZXJvTW9kZSA9ICJiYXNlbGluZSI7IH0KICAgICAgb3BlbkFwcCgpOwogICAgICBpZighc3RhdGUuc3Vic2NyaWJlZCl7IGtsYXZpeW9TdWJzY3JpYmUoc3RhdGUuZW1haWwsIHN0YXRlLmRvZ05hbWUpOyB9CiAgICB9CiAgfQoKICBpZihkb2N1bWVudC5yZWFkeVN0YXRlID09PSAibG9hZGluZyIpewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHdpcmUpOwogIH0gZWxzZSB7CiAgICB3aXJlKCk7CiAgfQoKfSkoKTs=\" data-no-optimize=\"1\" data-no-minify=\"1\" data-no-defer=\"1\" data-cfasync=\"false\"><\/script>\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n<h3 class=\"wp-block-heading\" id=\"h-how-the-tracker-works\">So funktioniert der Tracker<\/h3>\n\n<p class=\"wp-block-paragraph\">Jeden Tag notieren Sie vier Dinge: eine <strong>Kotbewertung<\/strong> auf derselben Sieben-Punkte-Skala wie bei <a href=\"https:\/\/bonza-retheme.blz.au\/de\/uebersicht-ueber-hundekot\/\">der \u201eDog Poop Chart\u201c<\/a>, <strong>die Energie<\/strong> Ihres Hundes, seinen <strong>Appetit<\/strong> und ob es an diesem Tag zu einem <strong>akuten Schub<\/strong> kam \u2013 Erbrechen, Stuhldrang, Pressen, Unf\u00e4lle oder offensichtliche Beschwerden. Die Gewichtsmessung ist optional, und einmal pro Woche reicht v\u00f6llig aus. Das ist bereits der gesamte t\u00e4gliche Aufwand, und er ist bewusst gering gehalten: Ein Tracker, den Sie tats\u00e4chlich bis zum Ende f\u00fchren, ist besser als ein detaillierter, den Sie bereits in der zweiten Woche aufgeben.  <\/p>\n\n<p class=\"wp-block-paragraph\" id=\"h-\">Die drei\u00dfig Tage sind in die vier Wochen des Reset-Prozesses unterteilt \u2013 \u00dcberpr\u00fcfung und Entfernung, Einf\u00fchrung der Unterst\u00fctzung, Beobachtung und Anpassung, Festlegung einer neuen Ausgangsbasis \u2013, sodass das Tool stets im Einklang mit dem Protokoll im Leitfaden bleibt. In der zweiten Woche wird die Unterst\u00fctzung eingef\u00fchrt, was in der Regel ein Nahrungserg\u00e4nzungsmittel bedeutet, das alle drei biotischen Ebenen abdeckt: pr\u00e4biotisch, probiotisch und postbiotisch, sei es nun <a href=\"https:\/\/bonza-retheme.blz.au\/de\/erganzung-leckerlis-kauen-hunde\/\">die funktionellen Nahrungserg\u00e4nzungsmittel von Bonza<\/a> oder eine \u00e4hnliche Komplettformulierung. Und sollten Sie einen Tag auslassen, k\u00f6nnen Sie zur\u00fcckgehen und einen der letzten sieben Tage nachholen, anstatt den Faden zu verlieren.  <\/p>\n\n<h3 class=\"wp-block-heading\" id=\"h-what-the-good-days-number-means\">Was die \u201eGood-Days\u201c-Zahl bedeutet<\/h3>\n\n<p class=\"wp-block-paragraph\">Die wichtigste Kennzahl sind <strong>die \u201eguten Tage\u201c<\/strong> Ihres Hundes: der Prozentsatz der von Ihnen erfassten Tage, an denen der Stuhlgang Ihres Hundes im gesunden Bereich lag, also in den Stufen 2 bis 3. Diese eine Zahl beantwortet die Frage, die Hundebesitzer wirklich interessiert: Funktioniert das? <\/p>\n\n<p class=\"wp-block-paragraph\" id=\"h-\">Es gibt zwei Interpretationsm\u00f6glichkeiten. <strong>\u201eIm Vergleich zu Ihrer ersten Woche\u201c<\/strong> vergleicht Ihre letzten sieben Tage mit der Basiswoche, die Sie zu Beginn erfasst haben \u2013 dies ist der Vergleich, auf dem das Protokoll des Leitfadens basiert. <strong>Der Vergleich mit Ihren letzten sieben Tagen<\/strong> bietet eine k\u00fcrzere, sensiblere Sichtweise und ist n\u00fctzlich, wenn Sie gerade etwas ge\u00e4ndert haben und wissen m\u00f6chten, ob sich dadurch etwas bewirkt hat. Beide Optionen werden erst angezeigt, wenn Sie sieben Tage erfasst haben, da zuvor noch nicht gen\u00fcgend Daten vorliegen, um von einem Trend zu sprechen \u2013 und ein Tracker, der Ihnen bereits in der ersten Woche schmeichelt, ist schlimmer als nutzlos. <\/p>\n\n<h3 class=\"wp-block-heading\" id=\"h-why-week-one-matters-most\">Warum die erste Woche am wichtigsten ist<\/h3>\n\n<p class=\"wp-block-paragraph\" id=\"h-\">Die erste Woche dient als Ausgangsbasis. Alles, was Ihnen der Tracker danach anzeigt, wird daran gemessen; protokollieren Sie daher ehrlich und nicht zu optimistisch \u2013 einschlie\u00dflich der schlechten Tage, insbesondere der schlechten Tage. Die Nutzer erinnern sich durchweg zu wenig daran, wie schwierig der Start war, und genau deshalb ist das Aufschreiben besser als das blo\u00dfe Erinnern. Eine schlechte erste Woche ist kein Misserfolg. Sie ist das, was es Ihnen erm\u00f6glicht, die Verbesserung zu erkennen, sobald sie eintritt. In der ersten Woche fordert der Leitfaden Sie zudem dazu auf, die eigentliche Arbeit zu leisten: die Ern\u00e4hrung zu \u00fcberpr\u00fcfen, alles zu eliminieren, was dem Mikrobiom schadet, und festzuhalten, wo Sie bei den zw\u00f6lf Anzeichen stehen. Falls Sie ihn noch nicht gelesen haben: Der Tracker macht in Verbindung mit <a href=\"https:\/\/bonza-retheme.blz.au\/de\/144212-2\/\" data-type=\"link\" data-id=\"https:\/\/bonza-retheme.blz.au\/free-gut-health-guide\/\">dem \u201eKompletten Leitfaden zur Darmgesundheit f\u00fcr Hundebesitzer\u201c<\/a> weitaus mehr Sinn.      <\/p>\n\n<h3 class=\"wp-block-heading\" id=\"h-when-it-is-time-to-call-the-vet\">Wann Sie den Tierarzt anrufen sollten<\/h3>\n\n<p class=\"wp-block-paragraph\">Der Tracker unterbricht sich selbst, wenn Sie etwas eintragen, das eher einen Tierarzt als weitere Daten erfordert: <strong>schwarzer oder teerartiger Stuhl<\/strong>, <strong>frisches Blut oder rote Streifen<\/strong>, <strong>blasser, grauer oder lehmfarbener Stuhl<\/strong>, <strong>sichtbare W\u00fcrmer<\/strong> oder <strong>starker Schleim<\/strong>. Er weist auch auf eine anhaltende Phase w\u00e4ssriger Tage hin, da es bei Welpen sowie bei kleinen oder \u00e4lteren Hunden schnell zu Dehydrierung kommen kann. In diesem Fall blendet das Tool den Trend aus und fordert Sie auf, Ihren Tierarzt anzurufen \u2013 was die richtige Vorgehensweise ist.  <\/p>\n\n<p class=\"wp-block-paragraph\" id=\"h-\">Abgesehen von diesen Anzeichen sollten Sie sich auf Ihr Urteilsverm\u00f6gen und Ihre Kenntnis Ihres eigenen Hundes verlassen. Ein Tracking-Tool zeichnet lediglich auf, was Sie beobachten; es kann niemanden untersuchen. Sollte Ihr Hund unwohl wirken oder etwas nicht ganz in Ordnung sein, vereinbaren Sie einen Termin und nehmen Sie Ihre Aufzeichnungen mit \u2013 t\u00e4gliche Aufzeichnungen \u00fcber einen Monat hinweg sind f\u00fcr einen Tierarzt wirklich hilfreich, und Sie k\u00f6nnen die gesamten Daten direkt aus dem Tool als Tabelle herunterladen.  <\/p>\n\n<h3 class=\"wp-block-heading\" id=\"h-frequently-asked-questions\">H\u00e4ufig gestellte Fragen<\/h3>\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1785156667151\"><strong class=\"schema-faq-question\"><strong>Ist es kostenlos?<\/strong><\/strong> <p class=\"schema-faq-answer\">Ja, und es bleibt kostenlos. Wir bitten Sie einmalig bei der Er\u00f6ffnung um Ihre E-Mail-Adresse, und danach k\u00f6nnen Sie den Dienst uneingeschr\u00e4nkt nutzen \u2013 keine Begrenzungen, keine Testphase, keine Einschr\u00e4nkungen. \u00dcber diese E-Mail-Adresse senden wir Ihnen den Leitfaden zur Darmgesundheit zu und informieren Sie, sobald die kostenpflichtige Version verf\u00fcgbar ist.  <\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1785156708442\"><strong class=\"schema-faq-question\"><strong>Wie viel Zeit nimmt das t\u00e4glich in Anspruch?<\/strong><\/strong> <p class=\"schema-faq-answer\">Etwa zwanzig Sekunden. Vier Klicks \u2013 und einmal pro Woche eine Gewichtsangabe, falls Sie dies nachverfolgen m\u00f6chten. Die Dauer wurde bewusst kurz gehalten, da ein Tracker nur dann sinnvoll ist, wenn Sie die drei\u00dfig Tage vollst\u00e4ndig absolvieren.  <\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1785156772064\"><strong class=\"schema-faq-question\"><strong>Was gilt als \u201eguter Tag\u201c?<\/strong><\/strong> <p class=\"schema-faq-answer\">Ein Tag, an dem der Stuhlgang Ihres Hundes auf einer Sieben-Punkte-Skala die Note 2 oder 3 erreicht hat \u2013 fest und in St\u00fccke unterteilt oder ein feuchter, geformter Zylinder. Diese beiden Noten liegen im gesunden Bereich, wobei die Note 2 als ideal gilt. <\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1785156805344\"><strong class=\"schema-faq-question\"><strong>Ich habe einen Tag ausgelassen. Habe ich es damit vermasselt? <\/strong><\/strong> <p class=\"schema-faq-answer\">Nein. Sie k\u00f6nnen zur\u00fcckgehen und jeden beliebigen Tag der letzten sieben Tage nachtragen; die Prozents\u00e4tze werden anhand der von Ihnen erfassten Tage berechnet und nicht anhand des Kalenders. Wenn Sie einen einzelnen Tag auslassen, geht lediglich ein wenig an Genauigkeit verloren, mehr nicht.  <\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1785156830121\"><strong class=\"schema-faq-question\"><strong>Wo werden meine Daten gespeichert?<\/strong><\/strong> <p class=\"schema-faq-answer\">In Ihrem Browser auf dem Ger\u00e4t, das Sie gerade verwenden. Bonza erh\u00e4lt keine Protokolle Ihres Hundes. Das bedeutet auch, dass Ihr Verlauf an diesen einen Browser gebunden ist: Wenn Sie Ihre Browserdaten l\u00f6schen oder vom Laptop zum Smartphone wechseln, wird er nicht weiterverfolgt. Sie k\u00f6nnen jederzeit alle Daten als Tabellenkalkulation herunterladen, und wir arbeiten derzeit an einer kontobasierten Version, die Ihre Daten sicher speichert und synchronisiert.   <\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1785156870202\"><strong class=\"schema-faq-question\"><strong>Kann ich mehr als einen Hund orten?<\/strong><\/strong> <p class=\"schema-faq-answer\">Nicht in dieser Version \u2013 hier wird die Historie jeweils eines Hundes pro Browser gespeichert. In der kontobasierten Version sind mehrere Hunde in der Liste enthalten. <\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1785156892999\"><strong class=\"schema-faq-question\"><strong>Muss ich meinen Hund wiegen?<\/strong><\/strong> <p class=\"schema-faq-answer\">Nein, die Gewichtsmessung ist optional. Falls Sie das Gewicht doch notieren, erhalten Sie durch eine w\u00f6chentliche Messung auf derselben Waage zu ungef\u00e4hr derselben Tageszeit weitaus aussagekr\u00e4ftigere Informationen als durch t\u00e4gliche Messungen, die meist eher widerspiegeln, was der Hund gefressen und getrunken hat, als einen tats\u00e4chlichen Trend. <\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1785156939494\"><strong class=\"schema-faq-question\"><strong>Die Zahlen verschlechtern sich zunehmend. Was soll ich tun? <\/strong><\/strong> <p class=\"schema-faq-answer\">Pr\u00fcfen Sie zun\u00e4chst, ob sich etwas ge\u00e4ndert hat \u2013 Futter, Leckerlis, Tagesablauf oder ein zu schnell eingef\u00fchrtes Erg\u00e4nzungsmittel. Ein paar unruhige Tage in der zweiten Woche sind normal, da sich das Mikrobiom erst anpassen muss. Ein Trend, der sich jedoch weiterhin in die falsche Richtung entwickelt, oder eines der oben genannten Warnzeichen ist jedoch ein Grund f\u00fcr ein Gespr\u00e4ch mit Ihrem Tierarzt und sollte nicht einfach abgewartet werden.  <\/p> <\/div> <\/div>\n","protected":false},"excerpt":{"rendered":"<p>30-Tage-Tracker zur Darmregeneration Zeigt die von Ihnen vorgenommene \u00c4nderung tats\u00e4chlich Wirkung? Drei\u00dfig Tage sind lang genug, damit der Darm eines Hundes darauf reagiert, und viel zu lang, um sich alles genau im Kopf zu merken. Dieser 30-Tage-Tracker zur Darmregeneration macht das Regenerationsprotokoll aus dem \u201eThe Dog Owner\u2019s Complete Gut Health Guide\u201c f\u00fcr Sie sichtbar: Tragen [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":144157,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","inline_featured_image":false,"footnotes":""},"class_list":["post-144173","page","type-page","status-publish","has-post-thumbnail","hentry"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.3 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>30-Tage-Tracker zur Darmregeneration | Verfolgen Sie t\u00e4glich die Darmgesundheit Ihres Hundes 30-Tage-Tracker zur Darmregeneration - Bonza<\/title>\n<meta name=\"description\" content=\"Kostenloser 30-Tage-Tracker zur Darmgesundheit Ihres Hundes: Erfassen Sie t\u00e4glich Stuhlgang, Energie, Appetit und akute Beschwerden und beobachten Sie, ob die guten Tage Ihres Hundes zunehmen. Zu Informationszwecken, keine Diagnose.\" \/>\n<meta name=\"robots\" content=\"noindex, nofollow\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"30-Tage-Tracker zur Darmregeneration\" \/>\n<meta property=\"og:description\" content=\"Kostenloser 30-Tage-Tracker zur Darmgesundheit Ihres Hundes: Erfassen Sie t\u00e4glich Stuhlgang, Energie, Appetit und akute Beschwerden und beobachten Sie, ob die guten Tage Ihres Hundes zunehmen. Zu Informationszwecken, keine Diagnose.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/\" \/>\n<meta property=\"og:site_name\" content=\"Bonza\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/bonzadogfoods\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-31T08:53:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bonza-retheme.blz.au\/wp-content\/uploads\/dog-owner-logging-daily-gut-health-30-day-gut-reset-tracker.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"619\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"9\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"WebPage\",\"FAQPage\"],\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/\",\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/\",\"name\":\"30-Tage-Tracker zur Darmregeneration | Verfolgen Sie t\u00e4glich die Darmgesundheit Ihres Hundes 30-Tage-Tracker zur Darmregeneration - Bonza\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/wp-content\\\/uploads\\\/dog-owner-logging-daily-gut-health-30-day-gut-reset-tracker.webp\",\"datePublished\":\"2026-07-27T13:21:52+00:00\",\"dateModified\":\"2026-07-31T08:53:02+00:00\",\"description\":\"Kostenloser 30-Tage-Tracker zur Darmgesundheit Ihres Hundes: Erfassen Sie t\u00e4glich Stuhlgang, Energie, Appetit und akute Beschwerden und beobachten Sie, ob die guten Tage Ihres Hundes zunehmen. Zu Informationszwecken, keine Diagnose.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#breadcrumb\"},\"mainEntity\":[{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156667151\"},{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156708442\"},{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156772064\"},{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156805344\"},{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156830121\"},{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156870202\"},{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156892999\"},{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156939494\"}],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/wp-content\\\/uploads\\\/dog-owner-logging-daily-gut-health-30-day-gut-reset-tracker.webp\",\"contentUrl\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/wp-content\\\/uploads\\\/dog-owner-logging-daily-gut-health-30-day-gut-reset-tracker.webp\",\"width\":1100,\"height\":619,\"caption\":\"Ein Hundebesitzer, der die t\u00e4gliche Darmgesundheit seines Hundes im Bonza-Tracker f\u00fcr den 30-t\u00e4gigen Darm-Reset protokolliert\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"30-Tage-Tracker zur Darmregeneration\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/\",\"name\":\"Bonza\",\"description\":\"Add Years to Your Dog&#039;s Life and Life to Their Years\",\"publisher\":{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/#organization\",\"name\":\"Happea Chappea Limited\",\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/wp-content\\\/uploads\\\/cropped-Favicon512-Bonza-Best-Super-Premium-Plant-based-Vegan-Vegetarian-Healthy-Dry-Dog-Food-Online-Subscri.png\",\"contentUrl\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/wp-content\\\/uploads\\\/cropped-Favicon512-Bonza-Best-Super-Premium-Plant-based-Vegan-Vegetarian-Healthy-Dry-Dog-Food-Online-Subscri.png\",\"width\":512,\"height\":512,\"caption\":\"Happea Chappea Limited\"},\"image\":{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/bonzadogfoods\",\"https:\\\/\\\/www.instagram.com\\\/bonzadogfoods\\\/\",\"https:\\\/\\\/www.tiktok.com\\\/@bonzadogfoods\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/bonzadogfoods\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@bonzadogfoods\\\/\",\"https:\\\/\\\/www.feefo.com\\\/en-GB\\\/reviews\\\/bonza-dog\",\"https:\\\/\\\/find-and-update.company-information.service.gov.uk\\\/company\\\/10873244\"],\"description\":\"Bonza is a UK plant-based dog food and supplement brand built on a gut-first approach to canine nutrition: plant-based by consequence, not by trend. Its range comprises one complete food, Superfoods and Ancient Grains, and seven targeted Bioactive Bites supplements. Every Bonza product supports the canine gut microbiome through the Biotics Triad of prebiotics, probiotics and postbiotics, and the eight gut-organ axes that connect the gut to the skin, joints, immunity, behaviour, heart, metabolism, liver and longevity, favouring fibre diversity over fibre quantity. The range is formulated in-house by founder Glendon Lloyd, who holds a Diploma in Canine Nutrition and a Diploma in Dog Nutrigenomics, both with Distinction, alongside a board of canine veterinary nutritionists. One Gut. Whole Dog.\",\"email\":\"whistle@bonza.dog\",\"telephone\":\"01453709677\",\"legalName\":\"Happea Chappea Limited\",\"foundingDate\":\"2017-07-19\",\"vatID\":\"GB499631826\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1\",\"maxValue\":\"10\"},\"founder\":{\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/#\\\/schema\\\/person\\\/b7a7255205fb41a6ac38fdbc8e19f5f3\"}},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156667151\",\"position\":1,\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156667151\",\"name\":\"Ist es kostenlos?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Ja, und es bleibt kostenlos. Wir bitten Sie einmalig bei der Er\u00f6ffnung um Ihre E-Mail-Adresse, und danach k\u00f6nnen Sie den Dienst uneingeschr\u00e4nkt nutzen \u2013 keine Begrenzungen, keine Testphase, keine Einschr\u00e4nkungen. \u00dcber diese E-Mail-Adresse senden wir Ihnen den Leitfaden zur Darmgesundheit zu und informieren Sie, sobald die kostenpflichtige Version verf\u00fcgbar ist.  \",\"inLanguage\":\"de\"},\"inLanguage\":\"de\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156708442\",\"position\":2,\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156708442\",\"name\":\"Wie viel Zeit nimmt das t\u00e4glich in Anspruch?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Etwa zwanzig Sekunden. Vier Klicks \u2013 und einmal pro Woche eine Gewichtsangabe, falls Sie dies nachverfolgen m\u00f6chten. Die Dauer wurde bewusst kurz gehalten, da ein Tracker nur dann sinnvoll ist, wenn Sie die drei\u00dfig Tage vollst\u00e4ndig absolvieren.  \",\"inLanguage\":\"de\"},\"inLanguage\":\"de\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156772064\",\"position\":3,\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156772064\",\"name\":\"Was gilt als \u201eguter Tag\u201c?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Ein Tag, an dem der Stuhlgang Ihres Hundes auf einer Sieben-Punkte-Skala die Note 2 oder 3 erreicht hat \u2013 fest und in St\u00fccke unterteilt oder ein feuchter, geformter Zylinder. Diese beiden Noten liegen im gesunden Bereich, wobei die Note 2 als ideal gilt. \",\"inLanguage\":\"de\"},\"inLanguage\":\"de\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156805344\",\"position\":4,\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156805344\",\"name\":\"Ich habe einen Tag ausgelassen. Habe ich es damit vermasselt?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Nein. Sie k\u00f6nnen zur\u00fcckgehen und jeden beliebigen Tag der letzten sieben Tage nachtragen; die Prozents\u00e4tze werden anhand der von Ihnen erfassten Tage berechnet und nicht anhand des Kalenders. Wenn Sie einen einzelnen Tag auslassen, geht lediglich ein wenig an Genauigkeit verloren, mehr nicht.  \",\"inLanguage\":\"de\"},\"inLanguage\":\"de\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156830121\",\"position\":5,\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156830121\",\"name\":\"Wo werden meine Daten gespeichert?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"In Ihrem Browser auf dem Ger\u00e4t, das Sie gerade verwenden. Bonza erh\u00e4lt keine Protokolle Ihres Hundes. Das bedeutet auch, dass Ihr Verlauf an diesen einen Browser gebunden ist: Wenn Sie Ihre Browserdaten l\u00f6schen oder vom Laptop zum Smartphone wechseln, wird er nicht weiterverfolgt. Sie k\u00f6nnen jederzeit alle Daten als Tabellenkalkulation herunterladen, und wir arbeiten derzeit an einer kontobasierten Version, die Ihre Daten sicher speichert und synchronisiert.   \",\"inLanguage\":\"de\"},\"inLanguage\":\"de\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156870202\",\"position\":6,\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156870202\",\"name\":\"Kann ich mehr als einen Hund orten?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Nicht in dieser Version \u2013 hier wird die Historie jeweils eines Hundes pro Browser gespeichert. In der kontobasierten Version sind mehrere Hunde in der Liste enthalten. \",\"inLanguage\":\"de\"},\"inLanguage\":\"de\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156892999\",\"position\":7,\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156892999\",\"name\":\"Muss ich meinen Hund wiegen?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Nein, die Gewichtsmessung ist optional. Falls Sie das Gewicht doch notieren, erhalten Sie durch eine w\u00f6chentliche Messung auf derselben Waage zu ungef\u00e4hr derselben Tageszeit weitaus aussagekr\u00e4ftigere Informationen als durch t\u00e4gliche Messungen, die meist eher widerspiegeln, was der Hund gefressen und getrunken hat, als einen tats\u00e4chlichen Trend. \",\"inLanguage\":\"de\"},\"inLanguage\":\"de\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156939494\",\"position\":8,\"url\":\"https:\\\/\\\/bonza-retheme.blz.au\\\/de\\\/30-tage-tracker-zur-darmregeneration\\\/#faq-question-1785156939494\",\"name\":\"Die Zahlen verschlechtern sich zunehmend. Was soll ich tun?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Pr\u00fcfen Sie zun\u00e4chst, ob sich etwas ge\u00e4ndert hat \u2013 Futter, Leckerlis, Tagesablauf oder ein zu schnell eingef\u00fchrtes Erg\u00e4nzungsmittel. Ein paar unruhige Tage in der zweiten Woche sind normal, da sich das Mikrobiom erst anpassen muss. Ein Trend, der sich jedoch weiterhin in die falsche Richtung entwickelt, oder eines der oben genannten Warnzeichen ist jedoch ein Grund f\u00fcr ein Gespr\u00e4ch mit Ihrem Tierarzt und sollte nicht einfach abgewartet werden.  \",\"inLanguage\":\"de\"},\"inLanguage\":\"de\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"30-Tage-Tracker zur Darmregeneration | Verfolgen Sie t\u00e4glich die Darmgesundheit Ihres Hundes 30-Tage-Tracker zur Darmregeneration - Bonza","description":"Kostenloser 30-Tage-Tracker zur Darmgesundheit Ihres Hundes: Erfassen Sie t\u00e4glich Stuhlgang, Energie, Appetit und akute Beschwerden und beobachten Sie, ob die guten Tage Ihres Hundes zunehmen. Zu Informationszwecken, keine Diagnose.","robots":{"index":"noindex","follow":"nofollow"},"og_locale":"de_DE","og_type":"article","og_title":"30-Tage-Tracker zur Darmregeneration","og_description":"Kostenloser 30-Tage-Tracker zur Darmgesundheit Ihres Hundes: Erfassen Sie t\u00e4glich Stuhlgang, Energie, Appetit und akute Beschwerden und beobachten Sie, ob die guten Tage Ihres Hundes zunehmen. Zu Informationszwecken, keine Diagnose.","og_url":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/","og_site_name":"Bonza","article_publisher":"https:\/\/www.facebook.com\/bonzadogfoods","article_modified_time":"2026-07-31T08:53:02+00:00","og_image":[{"width":1100,"height":619,"url":"https:\/\/bonza-retheme.blz.au\/wp-content\/uploads\/dog-owner-logging-daily-gut-health-30-day-gut-reset-tracker.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["WebPage","FAQPage"],"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/","url":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/","name":"30-Tage-Tracker zur Darmregeneration | Verfolgen Sie t\u00e4glich die Darmgesundheit Ihres Hundes 30-Tage-Tracker zur Darmregeneration - Bonza","isPartOf":{"@id":"https:\/\/bonza-retheme.blz.au\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#primaryimage"},"image":{"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#primaryimage"},"thumbnailUrl":"https:\/\/bonza-retheme.blz.au\/wp-content\/uploads\/dog-owner-logging-daily-gut-health-30-day-gut-reset-tracker.webp","datePublished":"2026-07-27T13:21:52+00:00","dateModified":"2026-07-31T08:53:02+00:00","description":"Kostenloser 30-Tage-Tracker zur Darmgesundheit Ihres Hundes: Erfassen Sie t\u00e4glich Stuhlgang, Energie, Appetit und akute Beschwerden und beobachten Sie, ob die guten Tage Ihres Hundes zunehmen. Zu Informationszwecken, keine Diagnose.","breadcrumb":{"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#breadcrumb"},"mainEntity":[{"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156667151"},{"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156708442"},{"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156772064"},{"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156805344"},{"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156830121"},{"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156870202"},{"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156892999"},{"@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156939494"}],"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#primaryimage","url":"https:\/\/bonza-retheme.blz.au\/wp-content\/uploads\/dog-owner-logging-daily-gut-health-30-day-gut-reset-tracker.webp","contentUrl":"https:\/\/bonza-retheme.blz.au\/wp-content\/uploads\/dog-owner-logging-daily-gut-health-30-day-gut-reset-tracker.webp","width":1100,"height":619,"caption":"Ein Hundebesitzer, der die t\u00e4gliche Darmgesundheit seines Hundes im Bonza-Tracker f\u00fcr den 30-t\u00e4gigen Darm-Reset protokolliert"},{"@type":"BreadcrumbList","@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bonza-retheme.blz.au\/de\/"},{"@type":"ListItem","position":2,"name":"30-Tage-Tracker zur Darmregeneration"}]},{"@type":"WebSite","@id":"https:\/\/bonza-retheme.blz.au\/de\/#website","url":"https:\/\/bonza-retheme.blz.au\/de\/","name":"Bonza","description":"Add Years to Your Dog&#039;s Life and Life to Their Years","publisher":{"@id":"https:\/\/bonza-retheme.blz.au\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bonza-retheme.blz.au\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/bonza-retheme.blz.au\/de\/#organization","name":"Happea Chappea Limited","url":"https:\/\/bonza-retheme.blz.au\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/bonza-retheme.blz.au\/de\/#\/schema\/logo\/image\/","url":"https:\/\/bonza-retheme.blz.au\/wp-content\/uploads\/cropped-Favicon512-Bonza-Best-Super-Premium-Plant-based-Vegan-Vegetarian-Healthy-Dry-Dog-Food-Online-Subscri.png","contentUrl":"https:\/\/bonza-retheme.blz.au\/wp-content\/uploads\/cropped-Favicon512-Bonza-Best-Super-Premium-Plant-based-Vegan-Vegetarian-Healthy-Dry-Dog-Food-Online-Subscri.png","width":512,"height":512,"caption":"Happea Chappea Limited"},"image":{"@id":"https:\/\/bonza-retheme.blz.au\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/bonzadogfoods","https:\/\/www.instagram.com\/bonzadogfoods\/","https:\/\/www.tiktok.com\/@bonzadogfoods","https:\/\/www.linkedin.com\/company\/bonzadogfoods\/","https:\/\/www.youtube.com\/@bonzadogfoods\/","https:\/\/www.feefo.com\/en-GB\/reviews\/bonza-dog","https:\/\/find-and-update.company-information.service.gov.uk\/company\/10873244"],"description":"Bonza is a UK plant-based dog food and supplement brand built on a gut-first approach to canine nutrition: plant-based by consequence, not by trend. Its range comprises one complete food, Superfoods and Ancient Grains, and seven targeted Bioactive Bites supplements. Every Bonza product supports the canine gut microbiome through the Biotics Triad of prebiotics, probiotics and postbiotics, and the eight gut-organ axes that connect the gut to the skin, joints, immunity, behaviour, heart, metabolism, liver and longevity, favouring fibre diversity over fibre quantity. The range is formulated in-house by founder Glendon Lloyd, who holds a Diploma in Canine Nutrition and a Diploma in Dog Nutrigenomics, both with Distinction, alongside a board of canine veterinary nutritionists. One Gut. Whole Dog.","email":"whistle@bonza.dog","telephone":"01453709677","legalName":"Happea Chappea Limited","foundingDate":"2017-07-19","vatID":"GB499631826","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1","maxValue":"10"},"founder":{"@id":"https:\/\/bonza-retheme.blz.au\/de\/#\/schema\/person\/b7a7255205fb41a6ac38fdbc8e19f5f3"}},{"@type":"Question","@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156667151","position":1,"url":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156667151","name":"Ist es kostenlos?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Ja, und es bleibt kostenlos. Wir bitten Sie einmalig bei der Er\u00f6ffnung um Ihre E-Mail-Adresse, und danach k\u00f6nnen Sie den Dienst uneingeschr\u00e4nkt nutzen \u2013 keine Begrenzungen, keine Testphase, keine Einschr\u00e4nkungen. \u00dcber diese E-Mail-Adresse senden wir Ihnen den Leitfaden zur Darmgesundheit zu und informieren Sie, sobald die kostenpflichtige Version verf\u00fcgbar ist.  ","inLanguage":"de"},"inLanguage":"de"},{"@type":"Question","@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156708442","position":2,"url":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156708442","name":"Wie viel Zeit nimmt das t\u00e4glich in Anspruch?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Etwa zwanzig Sekunden. Vier Klicks \u2013 und einmal pro Woche eine Gewichtsangabe, falls Sie dies nachverfolgen m\u00f6chten. Die Dauer wurde bewusst kurz gehalten, da ein Tracker nur dann sinnvoll ist, wenn Sie die drei\u00dfig Tage vollst\u00e4ndig absolvieren.  ","inLanguage":"de"},"inLanguage":"de"},{"@type":"Question","@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156772064","position":3,"url":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156772064","name":"Was gilt als \u201eguter Tag\u201c?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Ein Tag, an dem der Stuhlgang Ihres Hundes auf einer Sieben-Punkte-Skala die Note 2 oder 3 erreicht hat \u2013 fest und in St\u00fccke unterteilt oder ein feuchter, geformter Zylinder. Diese beiden Noten liegen im gesunden Bereich, wobei die Note 2 als ideal gilt. ","inLanguage":"de"},"inLanguage":"de"},{"@type":"Question","@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156805344","position":4,"url":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156805344","name":"Ich habe einen Tag ausgelassen. Habe ich es damit vermasselt?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Nein. Sie k\u00f6nnen zur\u00fcckgehen und jeden beliebigen Tag der letzten sieben Tage nachtragen; die Prozents\u00e4tze werden anhand der von Ihnen erfassten Tage berechnet und nicht anhand des Kalenders. Wenn Sie einen einzelnen Tag auslassen, geht lediglich ein wenig an Genauigkeit verloren, mehr nicht.  ","inLanguage":"de"},"inLanguage":"de"},{"@type":"Question","@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156830121","position":5,"url":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156830121","name":"Wo werden meine Daten gespeichert?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"In Ihrem Browser auf dem Ger\u00e4t, das Sie gerade verwenden. Bonza erh\u00e4lt keine Protokolle Ihres Hundes. Das bedeutet auch, dass Ihr Verlauf an diesen einen Browser gebunden ist: Wenn Sie Ihre Browserdaten l\u00f6schen oder vom Laptop zum Smartphone wechseln, wird er nicht weiterverfolgt. Sie k\u00f6nnen jederzeit alle Daten als Tabellenkalkulation herunterladen, und wir arbeiten derzeit an einer kontobasierten Version, die Ihre Daten sicher speichert und synchronisiert.   ","inLanguage":"de"},"inLanguage":"de"},{"@type":"Question","@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156870202","position":6,"url":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156870202","name":"Kann ich mehr als einen Hund orten?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Nicht in dieser Version \u2013 hier wird die Historie jeweils eines Hundes pro Browser gespeichert. In der kontobasierten Version sind mehrere Hunde in der Liste enthalten. ","inLanguage":"de"},"inLanguage":"de"},{"@type":"Question","@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156892999","position":7,"url":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156892999","name":"Muss ich meinen Hund wiegen?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Nein, die Gewichtsmessung ist optional. Falls Sie das Gewicht doch notieren, erhalten Sie durch eine w\u00f6chentliche Messung auf derselben Waage zu ungef\u00e4hr derselben Tageszeit weitaus aussagekr\u00e4ftigere Informationen als durch t\u00e4gliche Messungen, die meist eher widerspiegeln, was der Hund gefressen und getrunken hat, als einen tats\u00e4chlichen Trend. ","inLanguage":"de"},"inLanguage":"de"},{"@type":"Question","@id":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156939494","position":8,"url":"https:\/\/bonza-retheme.blz.au\/de\/30-tage-tracker-zur-darmregeneration\/#faq-question-1785156939494","name":"Die Zahlen verschlechtern sich zunehmend. Was soll ich tun?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Pr\u00fcfen Sie zun\u00e4chst, ob sich etwas ge\u00e4ndert hat \u2013 Futter, Leckerlis, Tagesablauf oder ein zu schnell eingef\u00fchrtes Erg\u00e4nzungsmittel. Ein paar unruhige Tage in der zweiten Woche sind normal, da sich das Mikrobiom erst anpassen muss. Ein Trend, der sich jedoch weiterhin in die falsche Richtung entwickelt, oder eines der oben genannten Warnzeichen ist jedoch ein Grund f\u00fcr ein Gespr\u00e4ch mit Ihrem Tierarzt und sollte nicht einfach abgewartet werden.  ","inLanguage":"de"},"inLanguage":"de"}]}},"featured_image_src":"https:\/\/bonza-retheme.blz.au\/wp-content\/uploads\/dog-owner-logging-daily-gut-health-30-day-gut-reset-tracker-600x400.webp","featured_image_src_square":"https:\/\/bonza-retheme.blz.au\/wp-content\/uploads\/dog-owner-logging-daily-gut-health-30-day-gut-reset-tracker-600x600.webp","_links":{"self":[{"href":"https:\/\/bonza-retheme.blz.au\/de\/wp-json\/wp\/v2\/pages\/144173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bonza-retheme.blz.au\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bonza-retheme.blz.au\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bonza-retheme.blz.au\/de\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/bonza-retheme.blz.au\/de\/wp-json\/wp\/v2\/comments?post=144173"}],"version-history":[{"count":0,"href":"https:\/\/bonza-retheme.blz.au\/de\/wp-json\/wp\/v2\/pages\/144173\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bonza-retheme.blz.au\/de\/wp-json\/wp\/v2\/media\/144157"}],"wp:attachment":[{"href":"https:\/\/bonza-retheme.blz.au\/de\/wp-json\/wp\/v2\/media?parent=144173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}