{"id":929,"date":"2022-10-28T18:23:58","date_gmt":"2022-10-28T18:23:58","guid":{"rendered":"https:\/\/schlattersinc.com\/schlatters\/?page_id=929"},"modified":"2026-10-20T07:52:55","modified_gmt":"2026-10-20T11:52:55","slug":"used-machinery","status":"publish","type":"page","link":"https:\/\/schlattersinc.com\/schlatters\/used-machinery\/","title":{"rendered":"Used Machinery"},"content":{"rendered":"\n<!--\n  SCHLATTER'S INC. - USED EQUIPMENT PAGE (reads listings from a Google Sheet)\n  Paste this whole file into the HTML tab of a Custom HTML block. Leave the JavaScript tab empty.\n  Your Google Sheet link is in the data-sheet=\"...\" setting on the next line with id=\"sce-equipment\".\n  Add, edit, or remove machines in the Google Sheet only.\n-->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Barlow+Condensed:wght@500;600;700&amp;family=Barlow:wght@400;500;600&amp;display=swap\" rel=\"stylesheet\">\n\n<div id=\"sce-equipment\" data-sheet=\"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vRZXioDVkHnpOXwqNWw7geGfll0dCfVkUlzA9V6vYsLLBpJCgb44ui9W9txnco5rm30ISEV1-ibpKPS\/pub?gid=897207052&amp;single=true&amp;output=csv\">\n  <header class=\"sce-head\">\n    <p class=\"sce-sub\">Pre-owned drainage machines, inspected and serviced in Francesville, Indiana. Call <a href=\"tel:+12195679158\">(219) 567-9158<\/a> with questions or to schedule a look.<\/p>\n  <\/header>\n\n  <button type=\"button\" class=\"sce-filter-toggle\" aria-expanded=\"false\" aria-controls=\"sce-filters\">Search &amp; filter<\/button>\n\n  <div class=\"sce-layout\">\n    <aside class=\"sce-filters\" id=\"sce-filters\" aria-label=\"Search and filter\">\n      <div class=\"sce-field\">\n        <label for=\"sce-q\">Search<\/label>\n        <input type=\"search\" id=\"sce-q\" placeholder=\"Make, model, engine...\" autocomplete=\"off\">\n      <\/div>\n\n      <fieldset class=\"sce-field\">\n        <legend>Type<\/legend>\n        <div id=\"sce-types\" class=\"sce-checks\"><\/div>\n      <\/fieldset>\n\n      <fieldset class=\"sce-field\">\n        <legend>Make<\/legend>\n        <div id=\"sce-makes\" class=\"sce-checks\"><\/div>\n      <\/fieldset>\n\n      <fieldset class=\"sce-field\">\n        <legend>Year<\/legend>\n        <div class=\"sce-range\">\n          <input type=\"number\" id=\"sce-ymin\" placeholder=\"From\" inputmode=\"numeric\" aria-label=\"Year from\">\n          <span aria-hidden=\"true\">to<\/span>\n          <input type=\"number\" id=\"sce-ymax\" placeholder=\"To\" inputmode=\"numeric\" aria-label=\"Year to\">\n        <\/div>\n      <\/fieldset>\n\n      <div class=\"sce-field\">\n        <label for=\"sce-hmax\">Maximum hours<\/label>\n        <input type=\"number\" id=\"sce-hmax\" placeholder=\"Any\" inputmode=\"numeric\" step=\"500\">\n      <\/div>\n\n      <div class=\"sce-field\">\n        <label for=\"sce-sort\">Sort by<\/label>\n        <select id=\"sce-sort\">\n          <option value=\"newest\">Year: newest first<\/option>\n          <option value=\"oldest\">Year: oldest first<\/option>\n          <option value=\"hours\">Hours: lowest first<\/option>\n          <option value=\"priceLow\">Price: lowest first<\/option>\n          <option value=\"priceHigh\">Price: highest first<\/option>\n        <\/select>\n      <\/div>\n\n      <button type=\"button\" class=\"sce-reset\" id=\"sce-reset\">Clear filters<\/button>\n    <\/aside>\n\n    <section class=\"sce-results\" aria-live=\"polite\">\n      <p class=\"sce-count\" id=\"sce-count\"><\/p>\n      <div class=\"sce-grid\" id=\"sce-grid\"><\/div>\n    <\/section>\n  <\/div>\n\n  <div class=\"sce-modal\" id=\"sce-modal\" hidden=\"\">\n    <div class=\"sce-dialog\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"sce-m-title\">\n      <button type=\"button\" class=\"sce-close\" id=\"sce-close\" aria-label=\"Close\">\u00d7<\/button>\n      <div class=\"sce-gallery\">\n        <div class=\"sce-stage\" id=\"sce-stage\">\n          <img id=\"sce-main\" alt=\"\">\n          <button type=\"button\" class=\"sce-nav sce-prev\" id=\"sce-prev\" aria-label=\"Previous photo\">\u2039<\/button>\n          <button type=\"button\" class=\"sce-nav sce-next\" id=\"sce-next\" aria-label=\"Next photo\">\u203a<\/button>\n          <span class=\"sce-counter\" id=\"sce-counter\"><\/span>\n        <\/div>\n        <div class=\"sce-thumbs\" id=\"sce-thumbs\"><\/div>\n      <\/div>\n      <div class=\"sce-info\" id=\"sce-info\"><\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<style>\n#sce-equipment {\n  --ink: #1f2a2e;\n  --muted: #59635f;\n  --line: #d6d9d2;\n  --panel: #f2f3ef;\n  --accent: #e8a317;   \/* machine yellow - change to match your brand *\/\n  --plate: #24302f;\n  font-family: \"Barlow\", \"Helvetica Neue\", Arial, sans-serif;\n  font-size: 16px;\n  line-height: 1.5;\n  color: var(--ink);\n  max-width: none;\n  width: 100vw;\n  margin-left: calc(50% - 50vw);\n  padding-left: 32px;\n  padding-right: 32px;\n}\n#sce-equipment *, #sce-equipment *::before, #sce-equipment *::after { box-sizing: border-box; }\n#sce-equipment img { max-width: 100%; display: block; }\n#sce-equipment button, #sce-equipment input, #sce-equipment select { font: inherit; color: inherit; }\n#sce-equipment :focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }\n\n#sce-equipment .sce-head { margin-bottom: 28px; max-width: 70ch; }\n#sce-equipment .sce-title {\n  font-family: \"Barlow Condensed\", \"Arial Narrow\", sans-serif;\n  font-weight: 700; font-size: 2.6rem; line-height: 1.05; margin: 0 0 8px; letter-spacing: -.01em;\n}\n#sce-equipment .sce-sub { margin: 0; color: var(--muted); }\n#sce-equipment .sce-sub a { color: var(--ink); font-weight: 600; }\n\n#sce-equipment .sce-layout { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 36px; align-items: start; }\n\n\/* Filters *\/\n#sce-equipment .sce-filters {\n  position: sticky; top: 100px;\n  background: var(--panel); border-radius: 6px; padding: 22px 20px;\n}\n#sce-equipment .sce-field { border: 0; margin: 0 0 22px; padding: 0; min-width: 0; }\n#sce-equipment .sce-field > label, #sce-equipment .sce-field > legend {\n  display: block; font-weight: 600; font-size: .95rem; margin-bottom: 8px; padding: 0;\n}\n#sce-equipment input[type=search], #sce-equipment input[type=number], #sce-equipment select {\n  width: 100%; height: 42px; padding: 0 12px; background: #fff;\n  border: 1px solid var(--line); border-radius: 4px;\n}\n#sce-equipment .sce-range { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: .9rem; }\n#sce-equipment .sce-checks { display: grid; gap: 6px; }\n#sce-equipment .sce-check { display: flex; align-items: center; gap: 10px; cursor: pointer; font-size: .95rem; }\n#sce-equipment .sce-check input { width: 18px; height: 18px; accent-color: var(--plate); margin: 0; }\n#sce-equipment .sce-check .n { margin-left: auto; color: var(--muted); font-size: .85rem; }\n#sce-equipment .sce-reset {\n  width: 100%; height: 42px; background: transparent; border: 1px solid var(--ink);\n  border-radius: 4px; font-weight: 600; cursor: pointer;\n}\n#sce-equipment .sce-reset:hover { background: var(--ink); color: #fff; }\n#sce-equipment .sce-filter-toggle { display: none; }\n\n\/* Results *\/\n#sce-equipment .sce-count { margin: 0 0 14px; color: var(--muted); font-size: .95rem; }\n#sce-equipment .sce-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 24px; }\n\n#sce-equipment .sce-card {\n  display: flex; flex-direction: column; text-align: left; padding: 0; cursor: pointer;\n  background: #fff; border: 1px solid var(--line); border-radius: 6px; overflow: hidden;\n}\n#sce-equipment .sce-card:hover .sce-photo img { transform: scale(1.03); }\n#sce-equipment .sce-photo { position: relative; aspect-ratio: 4 \/ 3; background: var(--panel); overflow: hidden; }\n#sce-equipment .sce-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }\n#sce-equipment .sce-pics {\n  position: absolute; right: 10px; bottom: 10px; background: rgba(20,28,28,.78); color: #fff;\n  font-size: .8rem; padding: 3px 9px; border-radius: 3px;\n}\n#sce-equipment .sce-status {\n  position: absolute; left: 10px; top: 10px; background: var(--accent); color: var(--ink);\n  font-weight: 600; font-size: .85rem; padding: 3px 10px; border-radius: 3px;\n}\n#sce-equipment .sce-status.sold { background: #b4342d; color: #fff; }\n\n\/* The machine \"ID plate\" *\/\n#sce-equipment .sce-plate {\n  display: flex; align-items: baseline; gap: 12px; background: var(--plate); color: #fff; padding: 12px 16px;\n  font-family: \"Barlow Condensed\", \"Arial Narrow\", sans-serif;\n}\n#sce-equipment .sce-plate .yr { color: var(--accent); font-weight: 700; font-size: 1.5rem; line-height: 1; }\n#sce-equipment .sce-plate .mm { font-weight: 600; font-size: 1.35rem; line-height: 1.1; }\n#sce-equipment .sce-body { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 10px; flex: 1; }\n#sce-equipment .sce-specs { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; margin: 0; font-size: .95rem; }\n#sce-equipment .sce-specs dt { color: var(--muted); font-size: .82rem; }\n#sce-equipment .sce-specs dd { margin: 0 0 4px; font-weight: 600; }\n#sce-equipment .sce-price { margin-top: auto; padding-top: 10px; border-top: 1px solid var(--line); font-weight: 600; font-size: 1.1rem; display: flex; justify-content: space-between; align-items: center; }\n#sce-equipment .sce-price span { font-weight: 500; font-size: .9rem; color: var(--muted); }\n\n#sce-equipment .sce-empty { grid-column: 1 \/ -1; padding: 48px 24px; text-align: center; background: var(--panel); border-radius: 6px; }\n#sce-equipment .sce-empty button { margin-top: 12px; background: var(--ink); color: #fff; border: 0; border-radius: 4px; padding: 10px 18px; cursor: pointer; font-weight: 600; }\n\n\/* Detail modal *\/\n#sce-equipment .sce-modal {\n  position: fixed; inset: 0; z-index: 99999; background: rgba(16,22,22,.86);\n  display: flex; align-items: center; justify-content: center; padding: 24px;\n}\n#sce-equipment .sce-modal[hidden] { display: none; }\n#sce-equipment .sce-dialog {\n  position: relative; background: #fff; border-radius: 6px; width: 100%; max-width: 1180px; max-height: calc(100vh - 48px);\n  display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); overflow: hidden;\n  animation: sce-in .22s ease-out;\n}\n@keyframes sce-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }\n#sce-equipment .sce-close {\n  position: absolute; top: 10px; right: 12px; z-index: 3; width: 40px; height: 40px; border-radius: 50%;\n  border: 0; background: #fff; font-size: 1.8rem; line-height: 1; cursor: pointer; box-shadow: 0 1px 4px rgba(0,0,0,.25);\n}\n#sce-equipment .sce-gallery { background: #141a1a; display: flex; flex-direction: column; min-height: 0; }\n#sce-equipment .sce-stage { position: relative; flex: 1; min-height: 300px; display: flex; align-items: center; justify-content: center; touch-action: pan-y; }\n#sce-equipment .sce-stage img { width: 100%; height: 100%; max-height: calc(100vh - 170px); object-fit: contain; }\n#sce-equipment .sce-nav {\n  position: absolute; top: 50%; transform: translateY(-50%); width: 46px; height: 46px; border-radius: 50%;\n  border: 0; background: rgba(255,255,255,.92); font-size: 2rem; line-height: 1; cursor: pointer; padding-bottom: 4px;\n}\n#sce-equipment .sce-prev { left: 12px; }\n#sce-equipment .sce-next { right: 12px; }\n#sce-equipment .sce-counter { position: absolute; left: 12px; bottom: 12px; background: rgba(0,0,0,.6); color: #fff; font-size: .85rem; padding: 3px 9px; border-radius: 3px; }\n#sce-equipment .sce-thumbs { display: flex; gap: 8px; padding: 10px; overflow-x: auto; }\n#sce-equipment .sce-thumb { flex: 0 0 84px; height: 62px; padding: 0; border: 2px solid transparent; border-radius: 3px; overflow: hidden; cursor: pointer; background: #000; opacity: .6; }\n#sce-equipment .sce-thumb img { width: 100%; height: 100%; object-fit: cover; }\n#sce-equipment .sce-thumb[aria-current=true] { border-color: var(--accent); opacity: 1; }\n#sce-equipment .sce-thumb:hover { opacity: 1; }\n\n#sce-equipment .sce-info { padding: 28px 26px; overflow-y: auto; }\n#sce-equipment .sce-info .yr { font-family: \"Barlow Condensed\", sans-serif; font-weight: 700; font-size: 1.3rem; color: #a87200; }\n#sce-equipment .sce-info h3 { font-family: \"Barlow Condensed\", sans-serif; font-weight: 700; font-size: 2rem; line-height: 1.05; margin: 2px 40px 16px 0; }\n#sce-equipment .sce-info .sce-specs { background: var(--panel); padding: 14px 16px; border-radius: 4px; margin-bottom: 18px; }\n#sce-equipment .sce-info .bigprice { font-size: 1.5rem; font-weight: 600; margin: 0 0 16px; }\n#sce-equipment .sce-desc h4 { font-size: 1rem; margin: 18px 0 6px; }\n#sce-equipment .sce-desc p { margin: 0 0 10px; }\n#sce-equipment .sce-desc ul { margin: 0 0 10px; padding-left: 20px; }\n#sce-equipment .sce-desc li { margin-bottom: 3px; }\n#sce-equipment .sce-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }\n#sce-equipment .sce-btn { display: inline-flex; align-items: center; height: 44px; padding: 0 18px; border-radius: 4px; font-weight: 600; text-decoration: none; }\n#sce-equipment .sce-btn.primary { background: var(--accent); color: var(--ink); }\n#sce-equipment .sce-btn.secondary { border: 1px solid var(--ink); color: var(--ink); }\n\n@media (max-width: 900px) {\n  #sce-equipment .sce-layout { grid-template-columns: 1fr; gap: 16px; }\n  #sce-equipment .sce-filter-toggle {\n    display: block; width: 100%; height: 46px; margin-bottom: 4px; background: var(--plate); color: #fff;\n    border: 0; border-radius: 4px; font-weight: 600; cursor: pointer;\n  }\n  #sce-equipment .sce-filters { position: static; display: none; }\n  #sce-equipment .sce-filters.open { display: block; }\n  #sce-equipment .sce-dialog { grid-template-columns: 1fr; overflow-y: auto; }\n  #sce-equipment .sce-stage { min-height: 240px; }\n  #sce-equipment .sce-stage img { max-height: 55vh; }\n  #sce-equipment .sce-info { overflow: visible; }\n  #sce-equipment .sce-modal { padding: 0; }\n  #sce-equipment .sce-dialog { max-height: 100vh; height: 100%; border-radius: 0; }\n}\n@media (prefers-reduced-motion: reduce) {\n  #sce-equipment * { animation: none !important; transition: none !important; }\n}\n<\/style>\n\n<script data-code=\"CihmdW5jdGlvbiAoKSB7CiAgdmFyIFNIRUVUX0NTVl9VUkwgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjZS1lcXVpcG1lbnQiKSB8fCBkb2N1bWVudC5ib2R5KS5nZXRBdHRyaWJ1dGUoImRhdGEtc2hlZXQiKSB8fCAiIjsKCiAgdmFyIExJU1RJTkdTID0gW107CgogIHZhciBQSE9ORV9ESVNQTEFZID0gIigyMTkpIDU2Ny05MTU4IjsKICB2YXIgUEhPTkVfTElOSyA9ICJ0ZWw6KzEyMTk1Njc5MTU4IjsKCiAgLyogLS0tLS0tLS0tLSBub3RoaW5nIGJlbG93IG5lZWRzIGVkaXRpbmcgLS0tLS0tLS0tLSAqLwogIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjZS1lcXVpcG1lbnQiKTsKICBpZiAoIXJvb3QpIHJldHVybjsKICBmdW5jdGlvbiAkKGlkKSB7IHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7IH0KICBmdW5jdGlvbiBlc2MocykgewogICAgcmV0dXJuIFN0cmluZyhzID09IG51bGwgPyAiIiA6IHMpLnJlcGxhY2UoL1smPD4iJ10vZywgZnVuY3Rpb24gKGMpIHsKICAgICAgcmV0dXJuIHsgIiYiOiAiJmFtcDsiLCAiPCI6ICImbHQ7IiwgIj4iOiAiJmd0OyIsICciJzogIiZxdW90OyIsICInIjogIiYjMzk7IiB9W2NdOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIGZtdEhvdXJzKGgpIHsgcmV0dXJuIGggPT0gbnVsbCA\/ICJOb3QgbGlzdGVkIiA6IGgudG9Mb2NhbGVTdHJpbmcoImVuLVVTIikgKyAiIGhycyI7IH0KICBmdW5jdGlvbiBmbXRQcmljZShwKSB7IHJldHVybiBwID8gIiQiICsgcC50b0xvY2FsZVN0cmluZygiZW4tVVMiKSA6ICJDYWxsIGZvciBwcmljZSI7IH0KICBmdW5jdGlvbiB0aXRsZShsKSB7IHJldHVybiBsLm1ha2UgKyAiICIgKyBsLm1vZGVsOyB9CgogIHZhciBzdGF0ZSA9IHsgcTogIiIsIHR5cGVzOiBbXSwgbWFrZXM6IFtdLCB5bWluOiBudWxsLCB5bWF4OiBudWxsLCBobWF4OiBudWxsLCBzb3J0OiAibmV3ZXN0IiB9OwoKICBmdW5jdGlvbiBidWlsZENoZWNrcyhjb250YWluZXJJZCwga2V5LCBsaXN0S2V5KSB7CiAgICB2YXIgY291bnRzID0ge307CiAgICBMSVNUSU5HUy5mb3JFYWNoKGZ1bmN0aW9uIChsKSB7IGlmIChsW2tleV0pIGNvdW50c1tsW2tleV1dID0gKGNvdW50c1tsW2tleV1dIHx8IDApICsgMTsgfSk7CiAgICB2YXIgdmFsdWVzID0gT2JqZWN0LmtleXMoY291bnRzKS5zb3J0KCk7CiAgICAkKGNvbnRhaW5lcklkKS5pbm5lckhUTUwgPSB2YWx1ZXMubWFwKGZ1bmN0aW9uICh2KSB7CiAgICAgIHJldHVybiAnPGxhYmVsIGNsYXNzPSJzY2UtY2hlY2siPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9IicgKyBlc2ModikgKyAnIj4gJyArIGVzYyh2KSArCiAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9Im4iPicgKyBjb3VudHNbdl0gKyAiPC9zcGFuPjwvbGFiZWw+IjsKICAgIH0pLmpvaW4oIiIpOwogICAgJChjb250YWluZXJJZCkuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgZnVuY3Rpb24gKCkgewogICAgICBzdGF0ZVtsaXN0S2V5XSA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbCgKICAgICAgICAkKGNvbnRhaW5lcklkKS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dDpjaGVja2VkIiksIGZ1bmN0aW9uIChpKSB7IHJldHVybiBpLnZhbHVlOyB9KTsKICAgICAgcmVuZGVyKCk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIG1hdGNoZXMobCkgewogICAgaWYgKHN0YXRlLnEpIHsKICAgICAgdmFyIGhheSA9IFtsLnllYXIsIGwubWFrZSwgbC5tb2RlbCwgbC50eXBlLCBsLmRlc2NyaXB0aW9uLCAobC5mZWF0dXJlcyB8fCBbXSkuam9pbigiICIpXS5qb2luKCIgIikudG9Mb3dlckNhc2UoKTsKICAgICAgdmFyIHdvcmRzID0gc3RhdGUucS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbik7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29yZHMubGVuZ3RoOyBpKyspIGlmIChoYXkuaW5kZXhPZih3b3Jkc1tpXSkgPT09IC0xKSByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBpZiAoc3RhdGUudHlwZXMubGVuZ3RoICYmIHN0YXRlLnR5cGVzLmluZGV4T2YobC50eXBlKSA9PT0gLTEpIHJldHVybiBmYWxzZTsKICAgIGlmIChzdGF0ZS5tYWtlcy5sZW5ndGggJiYgc3RhdGUubWFrZXMuaW5kZXhPZihsLm1ha2UpID09PSAtMSkgcmV0dXJuIGZhbHNlOwogICAgaWYgKHN0YXRlLnltaW4gJiYgbC55ZWFyIDwgc3RhdGUueW1pbikgcmV0dXJuIGZhbHNlOwogICAgaWYgKHN0YXRlLnltYXggJiYgbC55ZWFyID4gc3RhdGUueW1heCkgcmV0dXJuIGZhbHNlOwogICAgaWYgKHN0YXRlLmhtYXggJiYgKGwuaG91cnMgPT0gbnVsbCB8fCBsLmhvdXJzID4gc3RhdGUuaG1heCkpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgZnVuY3Rpb24gc29ydGVyKGEsIGIpIHsKICAgIHN3aXRjaCAoc3RhdGUuc29ydCkgewogICAgICBjYXNlICJvbGRlc3QiOiByZXR1cm4gYS55ZWFyIC0gYi55ZWFyOwogICAgICBjYXNlICJob3VycyI6IHJldHVybiAoYS5ob3VycyA9PSBudWxsID8gMWU5IDogYS5ob3VycykgLSAoYi5ob3VycyA9PSBudWxsID8gMWU5IDogYi5ob3Vycyk7CiAgICAgIGNhc2UgInByaWNlTG93IjogcmV0dXJuIChhLnByaWNlIHx8IDFlMTIpIC0gKGIucHJpY2UgfHwgMWUxMik7CiAgICAgIGNhc2UgInByaWNlSGlnaCI6IHJldHVybiAoYi5wcmljZSB8fCAwKSAtIChhLnByaWNlIHx8IDApOwogICAgICBkZWZhdWx0OiByZXR1cm4gYi55ZWFyIC0gYS55ZWFyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gY2FyZChsKSB7CiAgICB2YXIgc3RhdHVzQ2xzID0gL3NvbGQvaS50ZXN0KGwuc3RhdHVzKSA\/ICIgc29sZCIgOiAiIjsKICAgIHJldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzY2UtY2FyZCIgZGF0YS1pZD0iJyArIGVzYyhsLmlkKSArICciIGFyaWEtbGFiZWw9IlZpZXcgJyArIGVzYyhsLnllYXIgKyAiICIgKyB0aXRsZShsKSkgKyAnIj4nICsKICAgICAgJzxkaXYgY2xhc3M9InNjZS1waG90byI+JyArCiAgICAgICAgKGwucGhvdG9zICYmIGwucGhvdG9zWzBdID8gJzxpbWcgc3JjPSInICsgZXNjKGwucGhvdG9zWzBdKSArICciIGFsdD0iIiBsb2FkaW5nPSJsYXp5Ij4nIDogIiIpICsKICAgICAgICAobC5zdGF0dXMgPyAnPHNwYW4gY2xhc3M9InNjZS1zdGF0dXMnICsgc3RhdHVzQ2xzICsgJyI+JyArIGVzYyhsLnN0YXR1cykgKyAiPC9zcGFuPiIgOiAiIikgKwogICAgICAgIChsLnBob3RvcyAmJiBsLnBob3Rvcy5sZW5ndGggPiAxID8gJzxzcGFuIGNsYXNzPSJzY2UtcGljcyI+JyArIGwucGhvdG9zLmxlbmd0aCArICIgcGhvdG9zPC9zcGFuPiIgOiAiIikgKwogICAgICAiPC9kaXY+IiArCiAgICAgICc8ZGl2IGNsYXNzPSJzY2UtcGxhdGUiPjxzcGFuIGNsYXNzPSJ5ciI+JyArIGVzYyhsLnllYXIpICsgJzwvc3Bhbj48c3BhbiBjbGFzcz0ibW0iPicgKyBlc2ModGl0bGUobCkpICsgIjwvc3Bhbj48L2Rpdj4iICsKICAgICAgJzxkaXYgY2xhc3M9InNjZS1ib2R5Ij4nICsKICAgICAgICAnPGRsIGNsYXNzPSJzY2Utc3BlY3MiPjxkaXY+PGR0PlR5cGU8L2R0PjxkZD4nICsgZXNjKGwudHlwZSkgKyAiPC9kZD48L2Rpdj4iICsKICAgICAgICAiPGRpdj48ZHQ+SG91cnM8L2R0PjxkZD4iICsgZm10SG91cnMobC5ob3VycykgKyAiPC9kZD48L2Rpdj48L2RsPiIgKwogICAgICAgICc8ZGl2IGNsYXNzPSJzY2UtcHJpY2UiPicgKyBmbXRQcmljZShsLnByaWNlKSArICI8c3Bhbj5WaWV3IGRldGFpbHM8L3NwYW4+PC9kaXY+IiArCiAgICAgICI8L2Rpdj48L2J1dHRvbj4iOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCkgewogICAgdmFyIGxpc3QgPSBMSVNUSU5HUy5maWx0ZXIobWF0Y2hlcykuc29ydChzb3J0ZXIpOwogICAgJCgic2NlLWNvdW50IikudGV4dENvbnRlbnQgPSBsaXN0Lmxlbmd0aCA9PT0gMSA\/ICIxIG1hY2hpbmUiIDogbGlzdC5sZW5ndGggKyAiIG1hY2hpbmVzIjsKICAgICQoInNjZS1ncmlkIikuaW5uZXJIVE1MID0gbGlzdC5sZW5ndGggPyBsaXN0Lm1hcChjYXJkKS5qb2luKCIiKSA6CiAgICAgICc8ZGl2IGNsYXNzPSJzY2UtZW1wdHkiPjxwPjxzdHJvbmc+Tm8gbWFjaGluZXMgbWF0Y2ggdGhlc2UgZmlsdGVycy48L3N0cm9uZz48YnI+VHJ5IHdpZGVuaW5nIHRoZSB5ZWFyIG9yIGhvdXJzIHJhbmdlLCBvciBjYWxsIHVzIGFuZCB3ZVx1MjAxOWxsIGtlZXAgYW4gZXllIG91dCBmb3IgeW91LjwvcD4nICsKICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLXJlc2V0PkNsZWFyIGZpbHRlcnM8L2J1dHRvbj48L2Rpdj4nOwogIH0KCiAgZnVuY3Rpb24gcmVzZXRGaWx0ZXJzKCkgewogICAgc3RhdGUgPSB7IHE6ICIiLCB0eXBlczogW10sIG1ha2VzOiBbXSwgeW1pbjogbnVsbCwgeW1heDogbnVsbCwgaG1heDogbnVsbCwgc29ydDogc3RhdGUuc29ydCB9OwogICAgJCgic2NlLXEiKS52YWx1ZSA9ICIiOyAkKCJzY2UteW1pbiIpLnZhbHVlID0gIiI7ICQoInNjZS15bWF4IikudmFsdWUgPSAiIjsgJCgic2NlLWhtYXgiKS52YWx1ZSA9ICIiOwogICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIuc2NlLWNoZWNrcyBpbnB1dCIpLmZvckVhY2goZnVuY3Rpb24gKGkpIHsgaS5jaGVja2VkID0gZmFsc2U7IH0pOwogICAgcmVuZGVyKCk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRldGFpbCB2aWV3ICsgZ2FsbGVyeSAtLS0tLS0tLS0tICovCiAgdmFyIGN1cnJlbnQgPSBudWxsLCBpZHggPSAwLCBsYXN0Rm9jdXMgPSBudWxsOwoKICBmdW5jdGlvbiBzaG93UGhvdG8oaSkgewogICAgdmFyIHBob3RvcyA9IGN1cnJlbnQucGhvdG9zIHx8IFtdOwogICAgaWYgKCFwaG90b3MubGVuZ3RoKSByZXR1cm47CiAgICBpZHggPSAoaSArIHBob3Rvcy5sZW5ndGgpICUgcGhvdG9zLmxlbmd0aDsKICAgIHZhciBpbWcgPSAkKCJzY2UtbWFpbiIpOwogICAgaW1nLnNyYyA9IHBob3Rvc1tpZHhdOwogICAgaW1nLmFsdCA9IGN1cnJlbnQueWVhciArICIgIiArIHRpdGxlKGN1cnJlbnQpICsgIiwgcGhvdG8gIiArIChpZHggKyAxKSArICIgb2YgIiArIHBob3Rvcy5sZW5ndGg7CiAgICAkKCJzY2UtY291bnRlciIpLnRleHRDb250ZW50ID0gKGlkeCArIDEpICsgIiAvICIgKyBwaG90b3MubGVuZ3RoOwogICAgJCgic2NlLXRodW1icyIpLnF1ZXJ5U2VsZWN0b3JBbGwoIi5zY2UtdGh1bWIiKS5mb3JFYWNoKGZ1bmN0aW9uICh0LCBuKSB7CiAgICAgIHQuc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCBuID09PSBpZHggPyAidHJ1ZSIgOiAiZmFsc2UiKTsKICAgICAgaWYgKG4gPT09IGlkeCkgdC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAibmVhcmVzdCIsIGlubGluZTogIm5lYXJlc3QiIH0pOwogICAgfSk7CiAgICB2YXIgbXVsdGkgPSBwaG90b3MubGVuZ3RoID4gMTsKICAgICQoInNjZS1wcmV2IikuaGlkZGVuID0gIW11bHRpOyAkKCJzY2UtbmV4dCIpLmhpZGRlbiA9ICFtdWx0aTsgJCgic2NlLWNvdW50ZXIiKS5oaWRkZW4gPSAhbXVsdGk7CiAgfQoKICBmdW5jdGlvbiBvcGVuTGlzdGluZyhpZCkgewogICAgdmFyIGwgPSBMSVNUSU5HUy5maWx0ZXIoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHguaWQgPT09IGlkOyB9KVswXTsKICAgIGlmICghbCkgcmV0dXJuOwogICAgY3VycmVudCA9IGw7IGxhc3RGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7CiAgICB2YXIgcGhvdG9zID0gbC5waG90b3MgfHwgW107CiAgICAkKCJzY2UtdGh1bWJzIikuaW5uZXJIVE1MID0gcGhvdG9zLmxlbmd0aCA+IDEgPyBwaG90b3MubWFwKGZ1bmN0aW9uIChwLCBuKSB7CiAgICAgIHJldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzY2UtdGh1bWIiIGRhdGEtaT0iJyArIG4gKyAnIiBhcmlhLWxhYmVsPSJTaG93IHBob3RvICcgKyAobiArIDEpICsgJyI+PGltZyBzcmM9IicgKyBlc2MocCkgKyAnIiBhbHQ9IiIgbG9hZGluZz0ibGF6eSI+PC9idXR0b24+JzsKICAgIH0pLmpvaW4oIiIpIDogIiI7CiAgICAkKCJzY2UtdGh1bWJzIikuaGlkZGVuID0gcGhvdG9zLmxlbmd0aCA8IDI7CgogICAgdmFyIGZlYXRzID0gKGwuZmVhdHVyZXMgfHwgW10pLmxlbmd0aCA\/ICI8aDQ+RmVhdHVyZXM8L2g0Pjx1bD4iICsgbC5mZWF0dXJlcy5tYXAoZnVuY3Rpb24gKGYpIHsgcmV0dXJuICI8bGk+IiArIGVzYyhmKSArICI8L2xpPiI7IH0pLmpvaW4oIiIpICsgIjwvdWw+IiA6ICIiOwogICAgdmFyIGluY2wgPSAobC5pbmNsdWRlZCB8fCBbXSkubGVuZ3RoID8gIjxoND5Db21lcyB3aXRoPC9oND48dWw+IiArIGwuaW5jbHVkZWQubWFwKGZ1bmN0aW9uIChmKSB7IHJldHVybiAiPGxpPiIgKyBlc2MoZikgKyAiPC9saT4iOyB9KS5qb2luKCIiKSArICI8L3VsPiIgOiAiIjsKICAgICQoInNjZS1pbmZvIikuaW5uZXJIVE1MID0KICAgICAgJzxkaXYgY2xhc3M9InlyIj4nICsgZXNjKGwueWVhcikgKyAiPC9kaXY+IiArCiAgICAgICc8aDMgaWQ9InNjZS1tLXRpdGxlIj4nICsgZXNjKHRpdGxlKGwpKSArICI8L2gzPiIgKwogICAgICAnPHAgY2xhc3M9ImJpZ3ByaWNlIj4nICsgZm10UHJpY2UobC5wcmljZSkgKyAobC5zdGF0dXMgPyAiIFx1MjAxNCAiICsgZXNjKGwuc3RhdHVzKSA6ICIiKSArICI8L3A+IiArCiAgICAgICc8ZGwgY2xhc3M9InNjZS1zcGVjcyI+JyArCiAgICAgICAgIjxkaXY+PGR0PlllYXI8L2R0PjxkZD4iICsgZXNjKGwueWVhcikgKyAiPC9kZD48L2Rpdj4iICsKICAgICAgICAiPGRpdj48ZHQ+TWFrZTwvZHQ+PGRkPiIgKyBlc2MobC5tYWtlKSArICI8L2RkPjwvZGl2PiIgKwogICAgICAgICI8ZGl2PjxkdD5Nb2RlbDwvZHQ+PGRkPiIgKyBlc2MobC5tb2RlbCkgKyAiPC9kZD48L2Rpdj4iICsKICAgICAgICAiPGRpdj48ZHQ+SG91cnM8L2R0PjxkZD4iICsgZm10SG91cnMobC5ob3VycykgKyAiPC9kZD48L2Rpdj4iICsKICAgICAgICAiPGRpdj48ZHQ+VHlwZTwvZHQ+PGRkPiIgKyBlc2MobC50eXBlKSArICI8L2RkPjwvZGl2PiIgKwogICAgICAiPC9kbD4iICsKICAgICAgJzxkaXYgY2xhc3M9InNjZS1kZXNjIj4nICsgKGwuZGVzY3JpcHRpb24gPyAiPGg0PkRlc2NyaXB0aW9uPC9oND48cD4iICsgZXNjKGwuZGVzY3JpcHRpb24pICsgIjwvcD4iIDogIiIpICsgZmVhdHMgKyBpbmNsICsgIjwvZGl2PiIgKwogICAgICAnPGRpdiBjbGFzcz0ic2NlLWFjdGlvbnMiPjxhIGNsYXNzPSJzY2UtYnRuIHByaW1hcnkiIGhyZWY9IicgKyBQSE9ORV9MSU5LICsgJyI+Q2FsbCAnICsgUEhPTkVfRElTUExBWSArICI8L2E+IiArCiAgICAgIChsLmZseWVyID8gJzxhIGNsYXNzPSJzY2UtYnRuIHNlY29uZGFyeSIgaHJlZj0iJyArIGVzYyhsLmZseWVyKSArICciIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5NYWNoaW5lIGZseWVyIChQREYpPC9hPicgOiAiIikgKyAiPC9kaXY+IjsKCiAgICAkKCJzY2UtbW9kYWwiKS5oaWRkZW4gPSBmYWxzZTsKICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwogICAgc2hvd1Bob3RvKDApOwogICAgJCgic2NlLWNsb3NlIikuZm9jdXMoKTsKICAgIHRyeSB7IGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICIiLCAiIyIgKyBsLmlkKTsgfSBjYXRjaCAoZSkge30KICB9CgogIGZ1bmN0aW9uIGNsb3NlTGlzdGluZygpIHsKICAgICQoInNjZS1tb2RhbCIpLmhpZGRlbiA9IHRydWU7CiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAiIjsKICAgIGN1cnJlbnQgPSBudWxsOwogICAgdHJ5IHsgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgIiIsIGxvY2F0aW9uLnBhdGhuYW1lICsgbG9jYXRpb24uc2VhcmNoKTsgfSBjYXRjaCAoZSkge30KICAgIGlmIChsYXN0Rm9jdXMpIGxhc3RGb2N1cy5mb2N1cygpOwogIH0KCiAgLyogLS0tLS0tLS0tLSByZWFkaW5nIHRoZSBHb29nbGUgU2hlZXQgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHBhcnNlQ1NWKHRleHQpIHsKICAgIHZhciByb3dzID0gW10sIHJvdyA9IFtdLCBjZWxsID0gIiIsIHEgPSBmYWxzZTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykgewogICAgICB2YXIgYyA9IHRleHRbaV07CiAgICAgIGlmIChxKSB7CiAgICAgICAgaWYgKGMgPT09ICciJykgeyBpZiAodGV4dFtpICsgMV0gPT09ICciJykgeyBjZWxsICs9ICciJzsgaSsrOyB9IGVsc2UgcSA9IGZhbHNlOyB9CiAgICAgICAgZWxzZSBjZWxsICs9IGM7CiAgICAgIH0gZWxzZSBpZiAoYyA9PT0gJyInKSBxID0gdHJ1ZTsKICAgICAgZWxzZSBpZiAoYyA9PT0gIiwiKSB7IHJvdy5wdXNoKGNlbGwpOyBjZWxsID0gIiI7IH0KICAgICAgZWxzZSBpZiAoYyA9PT0gIlxuIikgeyByb3cucHVzaChjZWxsKTsgcm93cy5wdXNoKHJvdyk7IHJvdyA9IFtdOyBjZWxsID0gIiI7IH0KICAgICAgZWxzZSBpZiAoYyAhPT0gIlxyIikgY2VsbCArPSBjOwogICAgfQogICAgaWYgKGNlbGwgIT09ICIiIHx8IHJvdy5sZW5ndGgpIHsgcm93LnB1c2goY2VsbCk7IHJvd3MucHVzaChyb3cpOyB9CiAgICByZXR1cm4gcm93czsKICB9CiAgZnVuY3Rpb24gbnVtKHYpIHsgdmFyIG4gPSBwYXJzZUludChTdHJpbmcodiB8fCAiIikucmVwbGFjZSgvW14wLTldL2csICIiKSwgMTApOyByZXR1cm4gaXNOYU4obikgPyBudWxsIDogbjsgfQogIGZ1bmN0aW9uIGxpbmVzKHYpIHsKICAgIHJldHVybiBTdHJpbmcodiB8fCAiIikuc3BsaXQoL1xufFx8LykubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4LnRyaW0oKTsgfSkuZmlsdGVyKEJvb2xlYW4pOwogIH0KICBmdW5jdGlvbiBwaG90b1VybCh1KSB7CiAgICAvLyBHb29nbGUgRHJpdmUgc2hhcmUgbGlua3MgYmVjb21lIGRpcmVjdCBpbWFnZSBsaW5rcyAodGhlIHBob3RvIG11c3QgYmUgc2hhcmVkICJBbnlvbmUgd2l0aCB0aGUgbGluayIpCiAgICB2YXIgbSA9IHUubWF0Y2goL2RyaXZlXC5nb29nbGVcLmNvbVwvKD86ZmlsZVwvZFwvfG9wZW5cP2lkPXx1Y1w\/LippZD0pKFtcdy1dKykvKTsKICAgIHJldHVybiBtID8gImh0dHBzOi8vZHJpdmUuZ29vZ2xlLmNvbS90aHVtYm5haWw\/aWQ9IiArIG1bMV0gKyAiJnN6PXcyMDAwIiA6IHU7CiAgfQogIGZ1bmN0aW9uIHNsdWcocykgeyByZXR1cm4gU3RyaW5nKHMpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTldKy9nLCAiLSIpLnJlcGxhY2UoL14tfC0kL2csICIiKTsgfQoKICBmdW5jdGlvbiByb3dzVG9MaXN0aW5ncyhyb3dzKSB7CiAgICBpZiAoIXJvd3MubGVuZ3RoKSByZXR1cm4gW107CiAgICB2YXIgaGVhZCA9IHJvd3NbMF0ubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLnRyaW0oKS50b0xvd2VyQ2FzZSgpOyB9KTsKICAgIGZ1bmN0aW9uIGNvbChyLCBuYW1lKSB7IHZhciBpID0gaGVhZC5pbmRleE9mKG5hbWUpOyByZXR1cm4gaSA9PT0gLTEgPyAiIiA6IChyW2ldIHx8ICIiKS50cmltKCk7IH0KICAgIHZhciBzZWVuID0ge307CiAgICByZXR1cm4gcm93cy5zbGljZSgxKS5tYXAoZnVuY3Rpb24gKHIpIHsKICAgICAgdmFyIG1ha2UgPSBjb2wociwgIm1ha2UiKSwgbW9kZWwgPSBjb2wociwgIm1vZGVsIik7CiAgICAgIGlmICghbWFrZSAmJiAhbW9kZWwpIHJldHVybiBudWxsOwogICAgICB2YXIgeWVhciA9IG51bShjb2wociwgInllYXIiKSk7CiAgICAgIHZhciBpZCA9IHNsdWcoY29sKHIsICJpZCIpIHx8IFt5ZWFyLCBtYWtlLCBtb2RlbF0uam9pbigiICIpKTsKICAgICAgd2hpbGUgKHNlZW5baWRdKSBpZCArPSAiLTIiOwogICAgICBzZWVuW2lkXSA9IHRydWU7CiAgICAgIHJldHVybiB7CiAgICAgICAgaWQ6IGlkLCB5ZWFyOiB5ZWFyLCBtYWtlOiBtYWtlLCBtb2RlbDogbW9kZWwsCiAgICAgICAgdHlwZTogY29sKHIsICJ0eXBlIiksCiAgICAgICAgaG91cnM6IG51bShjb2wociwgImhvdXJzIikpLAogICAgICAgIHByaWNlOiBudW0oY29sKHIsICJwcmljZSIpKSwKICAgICAgICBzdGF0dXM6IGNvbChyLCAic3RhdHVzIiksCiAgICAgICAgZGVzY3JpcHRpb246IGNvbChyLCAiZGVzY3JpcHRpb24iKSwKICAgICAgICBmZWF0dXJlczogbGluZXMoY29sKHIsICJmZWF0dXJlcyIpKSwKICAgICAgICBpbmNsdWRlZDogbGluZXMoY29sKHIsICJpbmNsdWRlZCIpKSwKICAgICAgICBmbHllcjogY29sKHIsICJmbHllciBsaW5rIiksCiAgICAgICAgcGhvdG9zOiBsaW5lcyhjb2wociwgInBob3RvcyIpKS5tYXAocGhvdG9VcmwpCiAgICAgIH07CiAgICB9KS5maWx0ZXIoQm9vbGVhbik7CiAgfQoKICBmdW5jdGlvbiBzdGFydCgpIHsKICAgIGJ1aWxkQ2hlY2tzKCJzY2UtdHlwZXMiLCAidHlwZSIsICJ0eXBlcyIpOwogICAgYnVpbGRDaGVja3MoInNjZS1tYWtlcyIsICJtYWtlIiwgIm1ha2VzIik7CiAgICByZW5kZXIoKTsKICAgIGlmIChsb2NhdGlvbi5oYXNoLmxlbmd0aCA+IDEpIG9wZW5MaXN0aW5nKGRlY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5oYXNoLnNsaWNlKDEpKSk7CiAgfQoKICAkKCJzY2UtY291bnQiKS50ZXh0Q29udGVudCA9ICJMb2FkaW5nIG1hY2hpbmVzLi4uIjsKICBmZXRjaChTSEVFVF9DU1ZfVVJMKQogICAgLnRoZW4oZnVuY3Rpb24gKHIpIHsgaWYgKCFyLm9rKSB0aHJvdyBuZXcgRXJyb3IoInN0YXR1cyAiICsgci5zdGF0dXMpOyByZXR1cm4gci50ZXh0KCk7IH0pCiAgICAudGhlbihmdW5jdGlvbiAodCkgeyBMSVNUSU5HUyA9IHJvd3NUb0xpc3RpbmdzKHBhcnNlQ1NWKHQpKTsgc3RhcnQoKTsgfSkKICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICQoInNjZS1jb3VudCIpLnRleHRDb250ZW50ID0gIiI7CiAgICAgICQoInNjZS1ncmlkIikuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InNjZS1lbXB0eSI+PHA+PHN0cm9uZz5UaGUgZXF1aXBtZW50IGxpc3QgY291bGQgbm90IGJlIGxvYWRlZC48L3N0cm9uZz48YnI+UGxlYXNlIGNhbGwgJyArCiAgICAgICAgUEhPTkVfRElTUExBWSArICcgZm9yIGN1cnJlbnQgaW52ZW50b3J5LjwvcD48cCBzdHlsZT0iZm9udC1zaXplOi44cmVtO2NvbG9yOiM1OTYzNWYiPignICsgZXNjKGVyciAmJiBlcnIubWVzc2FnZSkgKyAnKTwvcD48L2Rpdj4nOwogICAgfSk7CgogIC8qIC0tLS0tLS0tLS0gd2lyaW5nIC0tLS0tLS0tLS0gKi8KCiAgJCgic2NlLXEiKS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGZ1bmN0aW9uIChlKSB7IHN0YXRlLnEgPSBlLnRhcmdldC52YWx1ZS50cmltKCk7IHJlbmRlcigpOyB9KTsKICAkKCJzY2UteW1pbiIpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rpb24gKGUpIHsgc3RhdGUueW1pbiA9IHBhcnNlSW50KGUudGFyZ2V0LnZhbHVlLCAxMCkgfHwgbnVsbDsgcmVuZGVyKCk7IH0pOwogICQoInNjZS15bWF4IikuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbiAoZSkgeyBzdGF0ZS55bWF4ID0gcGFyc2VJbnQoZS50YXJnZXQudmFsdWUsIDEwKSB8fCBudWxsOyByZW5kZXIoKTsgfSk7CiAgJCgic2NlLWhtYXgiKS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGZ1bmN0aW9uIChlKSB7IHN0YXRlLmhtYXggPSBwYXJzZUludChlLnRhcmdldC52YWx1ZSwgMTApIHx8IG51bGw7IHJlbmRlcigpOyB9KTsKICAkKCJzY2Utc29ydCIpLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGZ1bmN0aW9uIChlKSB7IHN0YXRlLnNvcnQgPSBlLnRhcmdldC52YWx1ZTsgcmVuZGVyKCk7IH0pOwogICQoInNjZS1yZXNldCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgcmVzZXRGaWx0ZXJzKTsKCiAgdmFyIHRvZ2dsZSA9IHJvb3QucXVlcnlTZWxlY3RvcigiLnNjZS1maWx0ZXItdG9nZ2xlIik7CiAgdG9nZ2xlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgewogICAgdmFyIG9wZW4gPSAkKCJzY2UtZmlsdGVycyIpLmNsYXNzTGlzdC50b2dnbGUoIm9wZW4iKTsKICAgIHRvZ2dsZS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCBvcGVuID8gInRydWUiIDogImZhbHNlIik7CiAgfSk7CgogICQoInNjZS1ncmlkIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoZSkgewogICAgdmFyIGMgPSBlLnRhcmdldC5jbG9zZXN0KCIuc2NlLWNhcmQiKTsKICAgIGlmIChjKSBvcGVuTGlzdGluZyhjLmdldEF0dHJpYnV0ZSgiZGF0YS1pZCIpKTsKICAgIGlmIChlLnRhcmdldC5jbG9zZXN0KCJbZGF0YS1yZXNldF0iKSkgcmVzZXRGaWx0ZXJzKCk7CiAgfSk7CgogICQoInNjZS1wcmV2IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoKSB7IHNob3dQaG90byhpZHggLSAxKTsgfSk7CiAgJCgic2NlLW5leHQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsgc2hvd1Bob3RvKGlkeCArIDEpOyB9KTsKICAkKCJzY2UtdGh1bWJzIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoZSkgewogICAgdmFyIHQgPSBlLnRhcmdldC5jbG9zZXN0KCIuc2NlLXRodW1iIik7CiAgICBpZiAodCkgc2hvd1Bob3RvKHBhcnNlSW50KHQuZ2V0QXR0cmlidXRlKCJkYXRhLWkiKSwgMTApKTsKICB9KTsKICAkKCJzY2UtY2xvc2UiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGNsb3NlTGlzdGluZyk7CiAgJCgic2NlLW1vZGFsIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoZSkgeyBpZiAoZS50YXJnZXQgPT09ICQoInNjZS1tb2RhbCIpKSBjbG9zZUxpc3RpbmcoKTsgfSk7CgogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBmdW5jdGlvbiAoZSkgewogICAgaWYgKCFjdXJyZW50KSByZXR1cm47CiAgICBpZiAoZS5rZXkgPT09ICJFc2NhcGUiKSBjbG9zZUxpc3RpbmcoKTsKICAgIGVsc2UgaWYgKGUua2V5ID09PSAiQXJyb3dMZWZ0Iikgc2hvd1Bob3RvKGlkeCAtIDEpOwogICAgZWxzZSBpZiAoZS5rZXkgPT09ICJBcnJvd1JpZ2h0Iikgc2hvd1Bob3RvKGlkeCArIDEpOwogICAgZWxzZSBpZiAoZS5rZXkgPT09ICJUYWIiKSB7CiAgICAgIHZhciBmID0gJCgic2NlLW1vZGFsIikucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uOm5vdChbaGlkZGVuXSksIGFbaHJlZl0iKTsKICAgICAgaWYgKCFmLmxlbmd0aCkgcmV0dXJuOwogICAgICB2YXIgZmlyc3QgPSBmWzBdLCBsYXN0ID0gZltmLmxlbmd0aCAtIDFdOwogICAgICBpZiAoZS5zaGlmdEtleSAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBmaXJzdCkgeyBlLnByZXZlbnREZWZhdWx0KCk7IGxhc3QuZm9jdXMoKTsgfQogICAgICBlbHNlIGlmICghZS5zaGlmdEtleSAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBsYXN0KSB7IGUucHJldmVudERlZmF1bHQoKTsgZmlyc3QuZm9jdXMoKTsgfQogICAgfQogIH0pOwoKICB2YXIgdHggPSBudWxsOwogICQoInNjZS1zdGFnZSIpLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBmdW5jdGlvbiAoZSkgeyB0eCA9IGUudG91Y2hlc1swXS5jbGllbnRYOyB9LCB7IHBhc3NpdmU6IHRydWUgfSk7CiAgJCgic2NlLXN0YWdlIikuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCBmdW5jdGlvbiAoZSkgewogICAgaWYgKHR4ID09IG51bGwpIHJldHVybjsKICAgIHZhciBkeCA9IGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCAtIHR4OyB0eCA9IG51bGw7CiAgICBpZiAoTWF0aC5hYnMoZHgpID4gNDApIHNob3dQaG90byhpZHggKyAoZHggPCAwID8gMSA6IC0xKSk7CiAgfSk7Cgp9KSgpOwo=\">new Function(atob(document.currentScript.dataset.code))();<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Pre-owned drainage machines, inspected and serviced in Francesville, Indiana. Call (219) 567-9158 with questions or to schedule a look. Search &amp; filter [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/page_fullwidth.php","meta":{"footnotes":""},"class_list":["post-929","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/schlattersinc.com\/schlatters\/wp-json\/wp\/v2\/pages\/929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/schlattersinc.com\/schlatters\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/schlattersinc.com\/schlatters\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/schlattersinc.com\/schlatters\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/schlattersinc.com\/schlatters\/wp-json\/wp\/v2\/comments?post=929"}],"version-history":[{"count":48,"href":"https:\/\/schlattersinc.com\/schlatters\/wp-json\/wp\/v2\/pages\/929\/revisions"}],"predecessor-version":[{"id":1334,"href":"https:\/\/schlattersinc.com\/schlatters\/wp-json\/wp\/v2\/pages\/929\/revisions\/1334"}],"wp:attachment":[{"href":"https:\/\/schlattersinc.com\/schlatters\/wp-json\/wp\/v2\/media?parent=929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}