{"id":2616,"date":"2026-08-26T02:23:10","date_gmt":"2026-08-25T17:23:10","guid":{"rendered":"https:\/\/www.hotelminthouse.com\/?page_id=2616"},"modified":"2026-08-26T04:00:19","modified_gmt":"2026-08-25T19:00:19","slug":"%e5%ae%9f%e9%a8%93%e7%94%a8%e3%83%9a%e3%83%bc%e3%82%b8","status":"publish","type":"page","link":"https:\/\/www.hotelminthouse.com\/?page_id=2616","title":{"rendered":"\u7df4\u7fd2\u7528"},"content":{"rendered":"\n<p class=\"has-text-align-center wp-block-paragraph\"><strong><span class=\"swl-fz u-fz-xl\"><span class=\"swl-inline-color has-swl-deep-01-color\">\u5ba2\u5ba4\u6599\u91d1\u8a08\u7b97<\/span><\/span><\/strong>\uff08\u30b5\u30f3\u30d7\u30eb\uff09<\/p>\n\n\n\n<style>\n  .fee-calc {\n    --bg: #f4f0f5;\n    --card: #ffffff;\n    --accent: #7b3f9e;\n    --accent-dark: #5c2d76;\n    --text: #2c2230;\n    --muted: #756a7c;\n    --border: #e2d9e6;\n  }\n  .fee-calc, .fee-calc * { box-sizing: border-box; }\n  .fee-calc {\n    font-family: \"Hiragino Kaku Gothic ProN\", \"Yu Gothic\", sans-serif;\n    color: var(--text);\n    background: var(--bg);\n    padding: 24px 12px 40px;\n    position: static;\n  }\n  .fee-calc .fc-wrap { max-width: 640px; margin: 0 auto; }\n  .fee-calc h1 {\n    text-align: center;\n    font-size: 1.4rem;\n    color: var(--accent-dark);\n    margin: 0 0 4px;\n  }\n  .fee-calc .fc-subtitle { text-align: center; color: var(--muted); font-size: 0.85rem; margin-bottom: 24px; }\n  .fee-calc .fc-card {\n    background: var(--card);\n    border-radius: 14px;\n    padding: 18px 20px;\n    margin-bottom: 16px;\n    box-shadow: 0 2px 10px rgba(90, 40, 110, 0.08);\n  }\n  .fee-calc .fc-card h2 {\n    font-size: 0.95rem;\n    color: var(--accent-dark);\n    margin: 0 0 12px;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n  }\n  .fee-calc .fc-badge {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: 20px; height: 20px;\n    background: var(--accent);\n    color: #fff;\n    border-radius: 50%;\n    font-size: 0.75rem;\n    flex: 0 0 auto;\n  }\n  .fee-calc .fc-btn-group { display: flex; flex-wrap: wrap; gap: 8px; }\n  .fee-calc .fc-opt {\n    flex: 1 1 auto;\n    min-width: 90px;\n    text-align: center;\n    padding: 10px 12px;\n    border: 1.5px solid var(--border);\n    border-radius: 10px;\n    cursor: pointer;\n    font-size: 0.88rem;\n    background: #fff;\n    color: var(--text);\n    transition: all 0.15s;\n    user-select: none;\n  }\n  .fee-calc .fc-opt:hover { border-color: var(--accent); }\n  .fee-calc .fc-opt.fc-active {\n    background: var(--accent);\n    border-color: var(--accent);\n    color: #fff;\n    font-weight: bold;\n  }\n  .fee-calc .fc-field-row {\n    display: flex;\n    gap: 10px;\n    align-items: center;\n    margin-bottom: 10px;\n    flex-wrap: wrap;\n  }\n  .fee-calc .fc-day-tag {\n    font-size: 0.78rem;\n    color: var(--accent-dark);\n    background: #f1e6f5;\n    padding: 6px 10px;\n    border-radius: 8px;\n    white-space: nowrap;\n  }\n  .fee-calc .fc-checkbox-row {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    font-size: 1rem;\n    color: var(--text);\n    white-space: nowrap;\n    padding: 6px 0;\n  }\n  .fee-calc .fc-checkbox-row input { width: 22px; height: 22px; accent-color: var(--accent); }\n  .fee-calc .fc-checkbox-row.fc-disabled { opacity: 0.45; }\n  .fee-calc .fc-checkbox-row.fc-disabled label { text-decoration: line-through; }\n  .fee-calc .fc-time-stepper {\n    display: flex;\n    align-items: center;\n    gap: 14px;\n    margin-top: 14px;\n  }\n  .fee-calc .fc-step-btn {\n    width: 44px; height: 44px;\n    border-radius: 50%;\n    border: 1.5px solid var(--accent);\n    background: #fff;\n    color: var(--accent);\n    font-size: 1.4rem;\n    cursor: pointer;\n    line-height: 1;\n    flex: 0 0 auto;\n  }\n  .fee-calc .fc-step-btn:active { background: var(--accent); color: #fff; }\n  .fee-calc .fc-time-display {\n    font-size: 1.4rem;\n    font-weight: bold;\n    min-width: 90px;\n    text-align: center;\n    color: var(--text);\n    letter-spacing: 1px;\n  }\n  .fee-calc .fc-preset-row {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));\n    gap: 8px;\n    margin-top: 10px;\n  }\n  .fee-calc .fc-preset-row .fc-opt {\n    min-width: 0;\n    padding: 7px 4px;\n    font-size: 0.78rem;\n  }\n  .fee-calc .fc-note { font-size: 0.73rem; color: var(--muted); margin-top: 10px; line-height: 1.6; }\n  .fee-calc .fc-error {\n    color: #b23b3b;\n    font-size: 0.85rem;\n    text-align: center;\n    padding: 10px;\n  }\n  .fee-calc .fc-result {\n    background: linear-gradient(135deg, var(--accent), var(--accent-dark));\n    color: #fff;\n    border-radius: 14px;\n    padding: 22px 20px;\n    text-align: center;\n    box-shadow: 0 4px 16px rgba(90, 40, 110, 0.25);\n  }\n  .fee-calc .fc-result .fc-label { font-size: 0.8rem; opacity: 0.85; margin-bottom: 6px; }\n  .fee-calc .fc-result .fc-amount { font-size: 1.9rem; font-weight: bold; letter-spacing: 0.5px; }\n  .fee-calc .fc-result .fc-breakdown { font-size: 0.75rem; opacity: 0.9; margin-top: 10px; line-height: 1.8; text-align: left; }\n  .fee-calc .fc-breakdown-divider {\n    display: block;\n    height: 1px;\n    background: rgba(255,255,255,0.25);\n    margin: 8px 0;\n  }\n  .fee-calc .fc-timeline { margin-top: 16px; }\n  .fee-calc .fc-tl-bar {\n    position: relative;\n    display: flex;\n    width: 100%;\n    height: 46px;\n    border-radius: 8px;\n    overflow: hidden;\n    box-shadow: 0 0 0 1px rgba(255,255,255,0.25) inset;\n  }\n  .fee-calc .fc-tl-daybreak {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    width: 0;\n    border-left: 1px dashed rgba(255,255,255,0.45);\n    pointer-events: none;\n  }\n  .fee-calc .fc-tl-seg {\n    flex-grow: 0;\n    flex-shrink: 0;\n    height: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n    border-right: 1px solid rgba(255,255,255,0.35);\n  }\n  .fee-calc .fc-tl-seg:last-child { border-right: none; }\n  .fee-calc .fc-tl-seg-label {\n    font-size: 0.62rem;\n    font-weight: bold;\n    color: #fff;\n    white-space: nowrap;\n    text-shadow: 0 1px 2px rgba(0,0,0,0.4);\n    padding: 0 3px;\n    text-align: center;\n    line-height: 1.35;\n  }\n  .fee-calc .fc-tl-seg-sub {\n    font-size: 0.56rem;\n    font-weight: normal;\n    opacity: 0.85;\n  }\n  .fee-calc .fc-tl-axis {\n    position: relative;\n    height: 16px;\n    font-size: 0.68rem;\n    opacity: 0.8;\n    margin-top: 4px;\n  }\n  .fee-calc .fc-tl-axis-item {\n    position: absolute;\n    top: 0;\n    white-space: nowrap;\n  }\n  .fee-calc .fc-tl-axis-start { transform: translateX(0); }\n  .fee-calc .fc-tl-axis-mid { transform: translateX(-50%); }\n  .fee-calc .fc-tl-axis-end { transform: translateX(-100%); }\n<\/style>\n\n<div class=\"fee-calc\">\n<div class=\"fc-wrap\">\n  <h1>\u6599\u91d1\u8a08\u7b97<\/h1>\n  <div class=\"fc-subtitle\">\u30db\u30c6\u30eb\u30df\u30f3\u30c8\u30cf\u30a6\u30b9 \u516c\u5f0f\u6599\u91d1\u8868\u30d9\u30fc\u30b9\uff08\u5165\u9000\u5ba4\u65e5\u6642\u304b\u3089\u81ea\u52d5\u8a08\u7b97\uff09<\/div>\n\n  <div class=\"fc-card\">\n    <h2><span class=\"fc-badge\">1<\/span>\u65bd\u8a2d\u30bf\u30a4\u30d7<\/h2>\n    <div class=\"fc-btn-group\" id=\"fcFacilityGroup\">\n      <div class=\"fc-opt fc-active\" data-value=\"wing\">\u30a6\u30a4\u30f3\u30b0<\/div>\n      <div class=\"fc-opt\" data-value=\"wingBlack\">\u30a6\u30a4\u30f3\u30b0-BLACK-<\/div>\n      <div class=\"fc-opt\" data-value=\"mintHouse\">\u30df\u30f3\u30c8\u30cf\u30a6\u30b9<\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"fc-card\">\n    <h2><span class=\"fc-badge\">2<\/span>\u5165\u5ba4<\/h2>\n    <div class=\"fc-btn-group\" id=\"fcInDayGroup\">\n      <div class=\"fc-opt fc-weekday-opt\" data-value=\"\u6708\">\u6708<\/div>\n      <div class=\"fc-opt fc-weekday-opt\" data-value=\"\u706b\">\u706b<\/div>\n      <div class=\"fc-opt fc-weekday-opt\" data-value=\"\u6c34\">\u6c34<\/div>\n      <div class=\"fc-opt fc-weekday-opt\" data-value=\"\u6728\">\u6728<\/div>\n      <div class=\"fc-opt fc-weekday-opt\" data-value=\"\u91d1\">\u91d1<\/div>\n      <div class=\"fc-opt fc-weekday-opt\" data-value=\"\u571f\">\u571f<\/div>\n      <div class=\"fc-opt fc-weekday-opt\" data-value=\"\u65e5\">\u65e5<\/div>\n      <div class=\"fc-opt fc-weekday-opt\" data-value=\"\u795d\">\u795d<\/div>\n    <\/div>\n    <div class=\"fc-time-stepper\">\n      <button type=\"button\" class=\"fc-step-btn\" id=\"fcInMinus\">\u2212<\/button>\n      <div class=\"fc-time-display\" id=\"fcInTimeVal\">20:00<\/div>\n      <button type=\"button\" class=\"fc-step-btn\" id=\"fcInPlus\">\uff0b<\/button>\n    <\/div>\n    <div class=\"fc-btn-group fc-preset-row\" id=\"fcInPresets\">\n      <div class=\"fc-opt fc-preset\" data-value=\"0\">0:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"180\">3:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"300\">5:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"480\">8:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"900\">15:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"1080\">18:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"1200\">20:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"1260\">21:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"1320\">22:00<\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"fc-card\">\n    <h2><span class=\"fc-badge\">3<\/span>\u9000\u5ba4<\/h2>\n    <div class=\"fc-btn-group\" id=\"fcOutSpanGroup\">\n      <div class=\"fc-opt\" data-value=\"same\">\u5f53\u65e5<\/div>\n      <div class=\"fc-opt\" data-value=\"next\">\u7fcc\u65e5<\/div>\n    <\/div>\n    <div class=\"fc-time-stepper\">\n      <button type=\"button\" class=\"fc-step-btn\" id=\"fcOutMinus\">\u2212<\/button>\n      <div class=\"fc-time-display\" id=\"fcOutTimeVal\">10:00<\/div>\n      <button type=\"button\" class=\"fc-step-btn\" id=\"fcOutPlus\">\uff0b<\/button>\n      <span class=\"fc-day-tag\" id=\"fcOutDayTag\">&#8211;<\/span>\n    <\/div>\n    <div class=\"fc-btn-group fc-preset-row\" id=\"fcOutPresets\">\n      <div class=\"fc-opt fc-preset\" data-value=\"0\">0:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"180\">3:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"300\">5:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"480\">8:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"600\">10:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"660\">11:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"720\">12:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"840\">14:00<\/div>\n      <div class=\"fc-opt fc-preset\" data-value=\"1380\">23:00<\/div>\n    <\/div>\n    <div class=\"fc-field-row\">\n      <div class=\"fc-checkbox-row\" id=\"fcOutHolidayRow\"><input type=\"checkbox\" id=\"fcOutHoliday\"><label for=\"fcOutHoliday\">\u9000\u5ba4\u65e5\u304c\u795d\u65e5<\/label><\/div>\n    <\/div>\n    <div class=\"fc-note\">\n      \u203b \u795d\u65e5\u306f\u81ea\u52d5\u5224\u5b9a\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u8a72\u5f53\u3059\u308b\u5834\u5408\u306f\u300c\u795d\u65e5\u6271\u3044\u300d\u306b\u30c1\u30a7\u30c3\u30af\u3092\u5165\u308c\u3066\u304f\u3060\u3055\u3044\u3002<br>\n      \u203b \u30b7\u30e7\u30fc\u30c8\u30bf\u30a4\u30e0\u306f\u5ef6\u9577\u4e0d\u53ef\u30025\u6642\u9593\u4f11\u61a9\u30fb\u30d5\u30ea\u30fc\u30bf\u30a4\u30e0\u306f\u4e0a\u9650\u3092\u8d85\u3048\u305f\u5206\u3092\u3001\u3054\u5bbf\u6cca\u306f\u6a19\u6e96\u30c1\u30a7\u30c3\u30af\u30a4\u30f3\u3088\u308a\u65e9\u3044\u5206\uff08\u524d\u5ef6\u9577\uff09\u30fb\u6a19\u6e96\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3088\u308a\u9045\u3044\u5206\uff08\u5f8c\u5ef6\u9577\uff09\u309230\u5206\u5358\u4f4d\u3067\u52a0\u7b97\u3057\u307e\u3059\uff08130\u5206\u3092\u8d85\u3048\u308b\u540c\u65e5\u5229\u7528\u306f5\u6642\u9593\u4f11\u61a9\u30fb\u30d5\u30ea\u30fc\u30bf\u30a4\u30e0\u30fb\u524d\u65e5\u304b\u3089\u306e\u5bbf\u6cca\u306e\u3046\u3061\u6700\u3082\u5b89\u3044\u30d7\u30e9\u30f3\u3092\u81ea\u52d5\u9078\u629e\uff09\u3002\n    <\/div>\n  <\/div>\n\n  <div class=\"fc-result\">\n    <div class=\"fc-label\">\u5408\u8a08\u6599\u91d1\uff08\u7a0e\u8fbc\u30fb\u76ee\u5b89\uff09<\/div>\n    <div class=\"fc-amount\" id=\"fcTotalAmount\">\u65e5\u6642\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044<\/div>\n    <div class=\"fc-timeline\" id=\"fcTimeline\"><\/div>\n    <div class=\"fc-breakdown\" id=\"fcBreakdown\"><\/div>\n  <\/div>\n<\/div>\n<\/div>\n\n<textarea id=\"fcPayload\" style=\"display:none\">KGZ1bmN0aW9uKCkgewovLyBUaGlzIGNhbGN1bGF0b3IncyBtYXJrdXAgbWlnaHQgbm90IGJlIG9uIGV2ZXJ5IHBhZ2UgKGlmIHRoaXMgc2NyaXB0IGlzCi8vIGxvYWRlZCBzaXRlLXdpZGUgdmlhIGEgZm9vdGVyLWNvZGUgcGx1Z2luKSwgc28gYmFpbCBvdXQgcXVpZXRseSBpZiB0aGUKLy8gbWFya3VwIGlzbid0IHByZXNlbnQgb24gdGhlIGN1cnJlbnQgcGFnZS4KaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmNGYWNpbGl0eUdyb3VwIikpIHJldHVybjsKLy8gR3VhcmQgYWdhaW5zdCBydW5uaW5nIHR3aWNlIChlLmcuIGlmIHRoZSBzdXJyb3VuZGluZyBjb250ZW50IGdldHMKLy8gcmVidWlsdC9yZS1pbnNlcnRlZCBieSB0aGUgcGFnZSBhbmQgb3VyIGxvYWRlciBmaXJlcyBhZ2FpbikuCmlmICh3aW5kb3cuX19mZWVDYWxjTG9hZGVkKSByZXR1cm47CndpbmRvdy5fX2ZlZUNhbGNMb2FkZWQgPSB0cnVlOwoKY29uc3QgUFJJQ0VTID0gewogIHdpbmc6IHsKICAgIHNob3J0OiAgICB7IHdlZWtkYXk6IDM0MDAsIHdlZWtlbmQ6IDQzMDAgfSwKICAgIHJlc3Q1aDogICB7IHdlZWtkYXk6IDQ0MDAsIHdlZWtlbmQ6IDU0MDAgfSwKICAgIGZyZWV0aW1lOiB7IHdlZWtkYXk6IDQ0MDAsIHdlZWtlbmQ6IDU0MDAgfSwKICAgIHN0YXk6IHsKICAgICAgbW9uVGh1OiA1OTAwLCBmcmlTYXQ6IDYxMDAsIHN1bk1vbjogNjEwMCwKICAgICAgaGVpaml0c3VTaHVrdTogNjEwMCwgc2h1a3VIZWlqaXRzdTogNjEwMCwgc2h1a3VQZWFrOiA3OTAwCiAgICB9CiAgfSwKICB3aW5nQmxhY2s6IHsKICAgIHNob3J0OiAgICB7IHdlZWtkYXk6IDM0MDAsIHdlZWtlbmQ6IDQzMDAgfSwKICAgIHJlc3Q1aDogICB7IHdlZWtkYXk6IDQ0MDAsIHdlZWtlbmQ6IDU0MDAgfSwKICAgIGZyZWV0aW1lOiB7IHdlZWtkYXk6IDQ0MDAsIHdlZWtlbmQ6IDU0MDAgfSwKICAgIHN0YXk6IHsKICAgICAgbW9uVGh1OiA1OTAwLCBmcmlTYXQ6IDYxMDAsIHN1bk1vbjogNjEwMCwKICAgICAgaGVpaml0c3VTaHVrdTogNjEwMCwgc2h1a3VIZWlqaXRzdTogNjEwMCwgc2h1a3VQZWFrOiA3OTAwCiAgICB9CiAgfSwKICBtaW50SG91c2U6IHsKICAgIHNob3J0OiAgICB7IHdlZWtkYXk6IDQxMDAsIHdlZWtlbmQ6IDUxMDAgfSwKICAgIHJlc3Q1aDogICB7IHdlZWtkYXk6IDU0MDAsIHdlZWtlbmQ6IDY0MDAgfSwKICAgIGZyZWV0aW1lOiB7IHdlZWtkYXk6IDU0MDAsIHdlZWtlbmQ6IDY0MDAgfSwKICAgIHN0YXk6IHsKICAgICAgbW9uVGh1OiA2OTAwLCBmcmlTYXQ6IDc5MDAsIHN1bk1vbjogNzkwMCwKICAgICAgaGVpaml0c3VTaHVrdTogNzkwMCwgc2h1a3VIZWlqaXRzdTogNzkwMCwgc2h1a3VQZWFrOiA4OTAwCiAgICB9CiAgfQp9OwoKY29uc3QgRVhUX1JBVEUgPSB7IHdlZWtkYXk6IDcwMCwgd2Vla2VuZDogOTAwIH07CmNvbnN0IEZBQ0lMSVRZX0xBQkVMID0geyB3aW5nOiAi44Km44Kk44Oz44KwIiwgd2luZ0JsYWNrOiAi44Km44Kk44Oz44KwLUJMQUNLLSIsIG1pbnRIb3VzZTogIuODn+ODs+ODiOODj+OCpuOCuSIgfTsKY29uc3QgUExBTl9MQUJFTCA9IHsgc2hvcnQ6ICLjgrfjg6fjg7zjg4jjgr\/jgqTjg6AoMTMw5YiGKSIsIHJlc3Q1aDogIjXmmYLplpPkvJHmhqkiLCBmcmVldGltZTogIuODleODquODvOOCv+OCpOODoCIsIHN0YXk6ICLjgZTlrr\/ms4oiIH07CmNvbnN0IFNUQVlfTEFCRUwgPSB7CiAgbW9uVGh1OiAi5pyI772e5pyo77yI5bmz5pel772e5bmz5pel77yJIiwgZnJpU2F0OiAi6YeR4oaS5ZyfIiwgc3VuTW9uOiAi5pel4oaS5pyIIiwKICBoZWlqaXRzdVNodWt1OiAi5bmz4oaS56WdIiwgc2h1a3VIZWlqaXRzdTogIuelneKGkuW5syIsIHNodWt1UGVhazogIuelneKGkuWcn++8j+Wcn+KGkuaXpe+8j+aXpeKGkuelne+8j+elneKGkuelnSIKfTsKY29uc3QgU1RBWV9TVEFOREFSRF9DSEVDS09VVCA9IHsKICBtb25UaHU6ICIxNDowMCIsIGZyaVNhdDogIjEyOjAwIiwgc3VuTW9uOiAiMTQ6MDAiLAogIGhlaWppdHN1U2h1a3U6ICIxMjowMCIsIHNodWt1SGVpaml0c3U6ICIxNDowMCIKfTsKY29uc3QgU1RBWV9TVEFOREFSRF9DSEVDS0lOID0gewogIG1vblRodTogIjE1OjAwIiwgZnJpU2F0OiAiMTU6MDAiLCBzdW5Nb246ICIyMDowMCIsCiAgaGVpaml0c3VTaHVrdTogIjE1OjAwIiwgc2h1a3VIZWlqaXRzdTogIjIwOjAwIgp9OwoKY29uc3QgSlNfREFZX1RPX0xBQkVMID0gWyLml6UiLCLmnIgiLCLngasiLCLmsLQiLCLmnKgiLCLph5EiLCLlnJ8iXTsKY29uc3QgV0VFS19PUkRFUiA9IFsi5pyIIiwi54GrIiwi5rC0Iiwi5pyoIiwi6YeRIiwi5ZyfIiwi5pelIl07CmNvbnN0IFdFRUtEQVlfTkggPSBbIuaciCIsIueBqyIsIuawtCIsIuacqCJdOwoKY29uc3Qgc3RhdGUgPSB7CiAgZmFjaWxpdHk6ICJ3aW5nIiwKICBpbkRheTogSlNfREFZX1RPX0xBQkVMW25ldyBEYXRlKCkuZ2V0RGF5KCldLAogIGluRGF5RGlzcGxheTogSlNfREFZX1RPX0xBQkVMW25ldyBEYXRlKCkuZ2V0RGF5KCldLAogIG91dFNwYW46ICJuZXh0IiwKICBpblRpbWVNaW46IDIwKjYwLAogIG91dFRpbWVNaW46IDEwKjYwCn07CgpmdW5jdGlvbiBmbXRUaW1lKG1pbikgewogIGNvbnN0IGggPSBNYXRoLmZsb29yKG1pbi82MCkgJSAyNDsKICBjb25zdCBtID0gbWluICUgNjA7CiAgcmV0dXJuIFN0cmluZyhoKS5wYWRTdGFydCgyLCIwIikgKyAiOiIgKyBTdHJpbmcobSkucGFkU3RhcnQoMiwiMCIpOwp9CgpmdW5jdGlvbiB1cGRhdGVUaW1lRGlzcGxheXMoKSB7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjSW5UaW1lVmFsIikudGV4dENvbnRlbnQgPSBmbXRUaW1lKHN0YXRlLmluVGltZU1pbik7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjT3V0VGltZVZhbCIpLnRleHRDb250ZW50ID0gZm10VGltZShzdGF0ZS5vdXRUaW1lTWluKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmNJblByZXNldHMiKS5xdWVyeVNlbGVjdG9yQWxsKCIuZmMtcHJlc2V0IikuZm9yRWFjaChlbCA9PiB7CiAgICBlbC5jbGFzc0xpc3QudG9nZ2xlKCJmYy1hY3RpdmUiLCBOdW1iZXIoZWwuZGF0YXNldC52YWx1ZSkgPT09IHN0YXRlLmluVGltZU1pbik7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjT3V0UHJlc2V0cyIpLnF1ZXJ5U2VsZWN0b3JBbGwoIi5mYy1wcmVzZXQiKS5mb3JFYWNoKGVsID0+IHsKICAgIGVsLmNsYXNzTGlzdC50b2dnbGUoImZjLWFjdGl2ZSIsIE51bWJlcihlbC5kYXRhc2V0LnZhbHVlKSA9PT0gc3RhdGUub3V0VGltZU1pbik7CiAgfSk7Cn0KCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmY0luTWludXMiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICBzdGF0ZS5pblRpbWVNaW4gPSAoc3RhdGUuaW5UaW1lTWluIC0gMzAgKyAxNDQwKSAlIDE0NDA7CiAgdXBkYXRlVGltZURpc3BsYXlzKCk7IHJlbmRlcigpOwp9KTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjSW5QbHVzIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7CiAgc3RhdGUuaW5UaW1lTWluID0gKHN0YXRlLmluVGltZU1pbiArIDMwKSAlIDE0NDA7CiAgdXBkYXRlVGltZURpc3BsYXlzKCk7IHJlbmRlcigpOwp9KTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjT3V0TWludXMiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICBzdGF0ZS5vdXRUaW1lTWluID0gKHN0YXRlLm91dFRpbWVNaW4gLSAzMCArIDE0NDApICUgMTQ0MDsKICB1cGRhdGVUaW1lRGlzcGxheXMoKTsgcmVuZGVyKCk7Cn0pOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmNPdXRQbHVzIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7CiAgc3RhdGUub3V0VGltZU1pbiA9IChzdGF0ZS5vdXRUaW1lTWluICsgMzApICUgMTQ0MDsKICB1cGRhdGVUaW1lRGlzcGxheXMoKTsgcmVuZGVyKCk7Cn0pOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmNJblByZXNldHMiKS5xdWVyeVNlbGVjdG9yQWxsKCIuZmMtcHJlc2V0IikuZm9yRWFjaChlbCA9PiB7CiAgZWwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7CiAgICBzdGF0ZS5pblRpbWVNaW4gPSBOdW1iZXIoZWwuZGF0YXNldC52YWx1ZSk7CiAgICB1cGRhdGVUaW1lRGlzcGxheXMoKTsgcmVuZGVyKCk7CiAgfSk7Cn0pOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmNPdXRQcmVzZXRzIikucXVlcnlTZWxlY3RvckFsbCgiLmZjLXByZXNldCIpLmZvckVhY2goZWwgPT4gewogIGVsLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKCkgPT4gewogICAgc3RhdGUub3V0VGltZU1pbiA9IE51bWJlcihlbC5kYXRhc2V0LnZhbHVlKTsKICAgIHVwZGF0ZVRpbWVEaXNwbGF5cygpOyByZW5kZXIoKTsKICB9KTsKfSk7CnVwZGF0ZVRpbWVEaXNwbGF5cygpOwoKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjRmFjaWxpdHlHcm91cCIpLnF1ZXJ5U2VsZWN0b3JBbGwoIi5mYy1vcHQiKS5mb3JFYWNoKGVsID0+IHsKICBlbC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNmY0ZhY2lsaXR5R3JvdXAgLmZjLW9wdCIpLmZvckVhY2gobyA9PiBvLmNsYXNzTGlzdC5yZW1vdmUoImZjLWFjdGl2ZSIpKTsKICAgIGVsLmNsYXNzTGlzdC5hZGQoImZjLWFjdGl2ZSIpOwogICAgc3RhdGUuZmFjaWxpdHkgPSBlbC5kYXRhc2V0LnZhbHVlOwogICAgcmVuZGVyKCk7CiAgfSk7Cn0pOwoKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjSW5EYXlHcm91cCIpLnF1ZXJ5U2VsZWN0b3JBbGwoIi5mYy13ZWVrZGF5LW9wdCIpLmZvckVhY2goZWwgPT4gewogIGlmIChlbC5kYXRhc2V0LnZhbHVlID09PSBzdGF0ZS5pbkRheURpc3BsYXkpIGVsLmNsYXNzTGlzdC5hZGQoImZjLWFjdGl2ZSIpOwogIGVsLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKCkgPT4gewogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI2ZjSW5EYXlHcm91cCAuZmMtd2Vla2RheS1vcHQiKS5mb3JFYWNoKG8gPT4gby5jbGFzc0xpc3QucmVtb3ZlKCJmYy1hY3RpdmUiKSk7CiAgICBlbC5jbGFzc0xpc3QuYWRkKCJmYy1hY3RpdmUiKTsKICAgIHN0YXRlLmluRGF5RGlzcGxheSA9IGVsLmRhdGFzZXQudmFsdWU7CiAgICBpZiAoZWwuZGF0YXNldC52YWx1ZSAhPT0gIuelnSIpIHN0YXRlLmluRGF5ID0gZWwuZGF0YXNldC52YWx1ZTsKICAgIHJlbmRlcigpOwogIH0pOwp9KTsKCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmY091dFNwYW5Hcm91cCIpLnF1ZXJ5U2VsZWN0b3JBbGwoIi5mYy1vcHQiKS5mb3JFYWNoKGVsID0+IHsKICBpZiAoZWwuZGF0YXNldC52YWx1ZSA9PT0gc3RhdGUub3V0U3BhbikgZWwuY2xhc3NMaXN0LmFkZCgiZmMtYWN0aXZlIik7CiAgZWwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjZmNPdXRTcGFuR3JvdXAgLmZjLW9wdCIpLmZvckVhY2gobyA9PiBvLmNsYXNzTGlzdC5yZW1vdmUoImZjLWFjdGl2ZSIpKTsKICAgIGVsLmNsYXNzTGlzdC5hZGQoImZjLWFjdGl2ZSIpOwogICAgY29uc3QgcHJldlNwYW4gPSBzdGF0ZS5vdXRTcGFuOwogICAgc3RhdGUub3V0U3BhbiA9IGVsLmRhdGFzZXQudmFsdWU7CiAgICBpZiAoc3RhdGUub3V0U3BhbiA9PT0gInNhbWUiICYmIHByZXZTcGFuICE9PSAic2FtZSIpIHsKICAgICAgc3RhdGUub3V0VGltZU1pbiA9IHN0YXRlLmluVGltZU1pbjsKICAgICAgdXBkYXRlVGltZURpc3BsYXlzKCk7CiAgICB9IGVsc2UgaWYgKHN0YXRlLm91dFNwYW4gPT09ICJuZXh0IiAmJiBwcmV2U3BhbiAhPT0gIm5leHQiKSB7CiAgICAgIHN0YXRlLm91dFRpbWVNaW4gPSAwOwogICAgICB1cGRhdGVUaW1lRGlzcGxheXMoKTsKICAgIH0KICAgIHJlbmRlcigpOwogIH0pOwp9KTsKClsiZmNPdXRIb2xpZGF5Il0uZm9yRWFjaChpZCA9PiB7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgcmVuZGVyKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgcmVuZGVyKTsKfSk7CgpmdW5jdGlvbiBuZXh0RGF5T2YoZGF5KSB7CiAgY29uc3QgaWR4ID0gV0VFS19PUkRFUi5pbmRleE9mKGRheSk7CiAgcmV0dXJuIFdFRUtfT1JERVJbKGlkeCsxKSAlIDddOwp9CmZ1bmN0aW9uIHByZXZEYXlPZihkYXkpIHsKICBjb25zdCBpZHggPSBXRUVLX09SREVSLmluZGV4T2YoZGF5KTsKICByZXR1cm4gV0VFS19PUkRFUlsoaWR4KzYpICUgN107Cn0KCmZ1bmN0aW9uIGlzV2Vla2VuZFR5cGUoZGF5Q2xhc3MpIHsKICByZXR1cm4gZGF5Q2xhc3MgPT09ICLlnJ8iIHx8IGRheUNsYXNzID09PSAi5pelIiB8fCBkYXlDbGFzcyA9PT0gIuelnSI7Cn0KCmZ1bmN0aW9uIG1pbnV0ZXNPZkRheSh0aW1lU3RyKSB7CiAgaWYgKCF0aW1lU3RyKSByZXR1cm4gbnVsbDsKICBjb25zdCBbaCxtXSA9IHRpbWVTdHIuc3BsaXQoIjoiKS5tYXAoTnVtYmVyKTsKICByZXR1cm4gaCo2MCArIG07Cn0KCmZ1bmN0aW9uIHN0YXlQYXR0ZXJuKGluQ2xhc3MsIG91dENsYXNzKSB7CiAgaWYgKFdFRUtEQVlfTkguaW5jbHVkZXMoaW5DbGFzcykgJiYgKFdFRUtEQVlfTkguaW5jbHVkZXMob3V0Q2xhc3MpIHx8IG91dENsYXNzID09PSAi6YeRIikpIHJldHVybiAibW9uVGh1IjsKICBpZiAoaW5DbGFzcyA9PT0gIumHkSIgJiYgb3V0Q2xhc3MgPT09ICLlnJ8iKSByZXR1cm4gImZyaVNhdCI7CiAgaWYgKGluQ2xhc3MgPT09ICLml6UiICYmIG91dENsYXNzID09PSAi5pyIIikgcmV0dXJuICJzdW5Nb24iOwogIGlmICgoV0VFS0RBWV9OSC5pbmNsdWRlcyhpbkNsYXNzKSB8fCBpbkNsYXNzID09PSAi6YeRIikgJiYgb3V0Q2xhc3MgPT09ICLnpZ0iKSByZXR1cm4gImhlaWppdHN1U2h1a3UiOwogIGlmIChpbkNsYXNzID09PSAi56WdIiAmJiBXRUVLREFZX05ILmluY2x1ZGVzKG91dENsYXNzKSkgcmV0dXJuICJzaHVrdUhlaWppdHN1IjsKICBpZiAoKGluQ2xhc3M9PT0i56WdIiYmb3V0Q2xhc3M9PT0i5ZyfIil8fChpbkNsYXNzPT09IuWcnyImJm91dENsYXNzPT09IuaXpSIpfHwoaW5DbGFzcz09PSLml6UiJiZvdXRDbGFzcz09PSLnpZ0iKXx8KGluQ2xhc3M9PT0i56WdIiYmb3V0Q2xhc3M9PT0i56WdIikpIHJldHVybiAic2h1a3VQZWFrIjsKICBpZiAoaXNXZWVrZW5kVHlwZShpbkNsYXNzKSB8fCBpc1dlZWtlbmRUeXBlKG91dENsYXNzKSkgcmV0dXJuICJzaHVrdVBlYWsiOwogIHJldHVybiAibW9uVGh1IjsKfQoKZnVuY3Rpb24gZm9ybWF0WWVuKHYpIHsKICByZXR1cm4gTWF0aC5yb3VuZCh2KS50b0xvY2FsZVN0cmluZygiamEtSlAiKSArICLlhoYiOwp9CmZ1bmN0aW9uIHByaWNlTGFiZWwodikgewogIHJldHVybiBBcnJheS5pc0FycmF5KHYpID8gYCR7Zm9ybWF0WWVuKHZbMF0pfe+9niR7Zm9ybWF0WWVuKHZbMV0pfWAgOiBmb3JtYXRZZW4odik7Cn0KZnVuY3Rpb24gcHJpY2VNaWQodikgewogIHJldHVybiBBcnJheS5pc0FycmF5KHYpID8gKHZbMF0rdlsxXSkvMiA6IHY7Cn0KZnVuY3Rpb24gYmVzdEJhc2UocGxhblByaWNlcywgZGF5S2V5KSB7CiAgY29uc3QgZGF5UHJpY2UgPSBwbGFuUHJpY2VzW2RheUtleV07CiAgaWYgKHBsYW5QcmljZXMubGltaXRlZCA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBiYXNlOiBkYXlQcmljZSwgaXNMaW1pdGVkOiBmYWxzZSB9OwogIGlmIChwcmljZU1pZChwbGFuUHJpY2VzLmxpbWl0ZWQpIDwgcHJpY2VNaWQoZGF5UHJpY2UpKSByZXR1cm4geyBiYXNlOiBwbGFuUHJpY2VzLmxpbWl0ZWQsIGlzTGltaXRlZDogdHJ1ZSB9OwogIHJldHVybiB7IGJhc2U6IGRheVByaWNlLCBpc0xpbWl0ZWQ6IGZhbHNlIH07Cn0KZnVuY3Rpb24gYWRkUHJpY2VzKGEsIGIpIHsKICBjb25zdCBhQXJyID0gQXJyYXkuaXNBcnJheShhKSA\/IGEgOiBbYSwgYV07CiAgY29uc3QgYkFyciA9IEFycmF5LmlzQXJyYXkoYikgPyBiIDogW2IsIGJdOwogIGNvbnN0IGxvID0gYUFyclswXSArIGJBcnJbMF07CiAgY29uc3QgaGkgPSBhQXJyWzFdICsgYkFyclsxXTsKICByZXR1cm4gbG8gPT09IGhpID8gbG8gOiBbbG8sIGhpXTsKfQoKZnVuY3Rpb24gcGFyc2VUaW1lVG9rZW4odG9rKSB7CiAgY29uc3QgaXNOZXh0ID0gdG9rLnN0YXJ0c1dpdGgoIue\/jCIpOwogIGNvbnN0IGNsZWFuID0gaXNOZXh0ID8gdG9rLnNsaWNlKDEpIDogdG9rOwogIGNvbnN0IFtoLCBtXSA9IGNsZWFuLnNwbGl0KCI6IikubWFwKE51bWJlcik7CiAgcmV0dXJuIGgqNjAgKyBtICsgKGlzTmV4dCA\/IDE0NDAgOiAwKTsKfQpmdW5jdGlvbiBwYXJzZVJhbmdlTGFiZWwobGFiZWwpIHsKICBjb25zdCBbYSwgYl0gPSBsYWJlbC5zcGxpdCgi44CcIik7CiAgcmV0dXJuIFtwYXJzZVRpbWVUb2tlbihhKSwgcGFyc2VUaW1lVG9rZW4oYildOwp9CmZ1bmN0aW9uIGZsYXR0ZW5UYWlsTG9jYWwodGFpbCwgc2VnbWVudHMpIHsKICBpZiAodGFpbC5mcm9udFN1YikgewogICAgZmxhdHRlblRhaWxMb2NhbCh0YWlsLmZyb250U3ViLCBzZWdtZW50cyk7CiAgfSBlbHNlIGlmICh0YWlsLmZyb250RXh0cmEgPiAwKSB7CiAgICBzZWdtZW50cy5wdXNoKHsgbGFiZWw6ICLlu7bplbciLCBwcmljZTogZm9ybWF0WWVuKHRhaWwuZnJvbnRFeHRyYSksIHN0YXJ0OiB0YWlsLnN0YXJ0LCBlbmQ6IHRhaWwuc3RhcnQgKyB0YWlsLmZyb250TWludXRlcywgaXNFeHQ6IHRydWUgfSk7CiAgfQogIGNvbnN0IGJhc2VTdGFydCA9IHRhaWwuZnJvbnRTdWIgPyB0YWlsLmZyb250U3ViLmVuZCA6ICh0YWlsLmZyb250RXh0cmEgPiAwID8gdGFpbC5zdGFydCArIHRhaWwuZnJvbnRNaW51dGVzIDogdGFpbC5zdGFydCk7CiAgY29uc3QgYmFzZUVuZCA9IHRhaWwuYmFja1N1YiA\/IHRhaWwuYmFja1N1Yi5zdGFydCA6ICh0YWlsLmV4dHJhID4gMCA\/IHRhaWwuZW5kIC0gdGFpbC5leHRNaW51dGVzIDogdGFpbC5lbmQpOwogIHNlZ21lbnRzLnB1c2goeyBsYWJlbDogUExBTl9MQUJFTFt0YWlsLnBsYW5dLCBwcmljZTogcHJpY2VMYWJlbCh0YWlsLmJhc2UpLCBzdGFydDogYmFzZVN0YXJ0LCBlbmQ6IGJhc2VFbmQsIGlzRXh0OiBmYWxzZSB9KTsKICBpZiAodGFpbC5iYWNrU3ViKSB7CiAgICBmbGF0dGVuVGFpbExvY2FsKHRhaWwuYmFja1N1Yiwgc2VnbWVudHMpOwogIH0gZWxzZSBpZiAodGFpbC5leHRyYSA+IDApIHsKICAgIHNlZ21lbnRzLnB1c2goeyBsYWJlbDogIuW7tumVtyIsIHByaWNlOiBmb3JtYXRZZW4odGFpbC5leHRyYSksIHN0YXJ0OiB0YWlsLmVuZCAtIHRhaWwuZXh0TWludXRlcywgZW5kOiB0YWlsLmVuZCwgaXNFeHQ6IHRydWUgfSk7CiAgfQp9CmZ1bmN0aW9uIGZsYXR0ZW5UYWlsR2xvYmFsKHRhaWwsIG91dGVyU3RhcnQsIG91dGVyRW5kLCBzZWdtZW50cykgewogIGNvbnN0IGxvY2FsID0gW107CiAgZmxhdHRlblRhaWxMb2NhbCh0YWlsLCBsb2NhbCk7CiAgY29uc3Qgb2Zmc2V0ID0gb3V0ZXJTdGFydCAtIHRhaWwuc3RhcnQ7CiAgbG9jYWwuZm9yRWFjaChzZWcgPT4gc2VnbWVudHMucHVzaChPYmplY3QuYXNzaWduKHt9LCBzZWcsIHsgc3RhcnQ6IHNlZy5zdGFydCArIG9mZnNldCwgZW5kOiBzZWcuZW5kICsgb2Zmc2V0IH0pKSk7Cn0KZnVuY3Rpb24gdGFpbFNlc3Npb25Db3N0KHRhaWxTdGFydCwgdGFpbEVuZCwgd2Vla2VuZFR5cGVUYWlsLCBkYXlLZXlUYWlsLCBkZXB0aCkgewogIGRlcHRoID0gZGVwdGggfHwgMDsKICBpZiAodGFpbEVuZCA8PSB0YWlsU3RhcnQgfHwgZGVwdGggPiA4KSByZXR1cm4gbnVsbDsKICBjb25zdCBkdXIgPSB0YWlsRW5kIC0gdGFpbFN0YXJ0OwogIGNvbnN0IHAgPSBQUklDRVNbc3RhdGUuZmFjaWxpdHldOwogIGlmIChkdXIgPD0gMTMwKSB7CiAgICBjb25zdCBiYXNlID0gcC5zaG9ydFt3ZWVrZW5kVHlwZVRhaWwgPyAid2Vla2VuZCIgOiAid2Vla2RheSJdOwogICAgcmV0dXJuIHsgcGxhbjogInNob3J0IiwgYmFzZSwgZXh0cmE6IDAsIGV4dE1pbnV0ZXM6IDAsIGZyb250RXh0cmE6IDAsIGZyb250TWludXRlczogMCwgZnJvbnRTdWI6IG51bGwsIGJhY2tTdWI6IG51bGwsIHRvdGFsOiBiYXNlLCBpc0xpbWl0ZWQ6IGZhbHNlLCBzdGFydDogdGFpbFN0YXJ0LCBlbmQ6IHRhaWxFbmQgfTsKICB9CiAgY29uc3QgcmVzdEJCID0gYmVzdEJhc2UocC5yZXN0NWgsIGRheUtleVRhaWwpOwogIGNvbnN0IHJlc3RCYXNlID0gcmVzdEJCLmJhc2UsIHJlc3RJc0xpbWl0ZWQgPSByZXN0QkIuaXNMaW1pdGVkOwogIGNvbnN0IHJlc3RPdmVyYWdlID0gTWF0aC5tYXgoMCwgZHVyIC0gMzAwKTsKICBsZXQgcmVzdEV4dE1pbnV0ZXMgPSAwLCByZXN0RXh0cmEgPSAwLCByZXN0Q29tcG9uZW50ID0gMCwgcmVzdFN1YiA9IG51bGw7CiAgaWYgKHJlc3RPdmVyYWdlID4gMCkgewogICAgcmVzdEV4dE1pbnV0ZXMgPSBNYXRoLmNlaWwocmVzdE92ZXJhZ2UvMzApKjMwOwogICAgcmVzdEV4dHJhID0gKHJlc3RFeHRNaW51dGVzLzMwKSAqIEVYVF9SQVRFW2RheUtleVRhaWxdOwogICAgcmVzdENvbXBvbmVudCA9IHJlc3RFeHRyYTsKICAgIGNvbnN0IHN1YiA9IHRhaWxTZXNzaW9uQ29zdCh0YWlsU3RhcnQgKyAzMDAsIHRhaWxFbmQsIHdlZWtlbmRUeXBlVGFpbCwgZGF5S2V5VGFpbCwgZGVwdGggKyAxKTsKICAgIGlmIChzdWIgJiYgcHJpY2VNaWQoc3ViLnRvdGFsKSA8IHJlc3RFeHRyYSkgewogICAgICByZXN0U3ViID0gc3ViOwogICAgICByZXN0Q29tcG9uZW50ID0gc3ViLnRvdGFsOwogICAgfQogIH0KICBjb25zdCByZXN0VG90YWwgPSBhZGRQcmljZXMocmVzdEJhc2UsIHJlc3RDb21wb25lbnQpOwoKICBjb25zdCBmcmVlQkIgPSBiZXN0QmFzZShwLmZyZWV0aW1lLCBkYXlLZXlUYWlsKTsKICBjb25zdCBmcmVlQmFzZSA9IGZyZWVCQi5iYXNlLCBmcmVlSXNMaW1pdGVkID0gZnJlZUJCLmlzTGltaXRlZDsKICBjb25zdCB3aW5kb3dTdGFydE1pbiA9IDUqNjA7CiAgY29uc3Qgd2luZG93RW5kTWluID0gd2Vla2VuZFR5cGVUYWlsID8gMjAqNjAgOiAyMyo2MDsKCiAgY29uc3QgZnJlZUZyb250T3ZlcmFnZSA9IE1hdGgubWF4KDAsIHdpbmRvd1N0YXJ0TWluIC0gdGFpbFN0YXJ0KTsKICBsZXQgZnJlZUZyb250TWludXRlcyA9IDAsIGZyZWVGcm9udEV4dHJhID0gMCwgZnJlZUZyb250Q29tcG9uZW50ID0gMCwgZnJlZUZyb250U3ViID0gbnVsbDsKICBpZiAoZnJlZUZyb250T3ZlcmFnZSA+IDApIHsKICAgIGZyZWVGcm9udE1pbnV0ZXMgPSBNYXRoLmNlaWwoZnJlZUZyb250T3ZlcmFnZS8zMCkqMzA7CiAgICBmcmVlRnJvbnRFeHRyYSA9IChmcmVlRnJvbnRNaW51dGVzLzMwKSAqIEVYVF9SQVRFW2RheUtleVRhaWxdOwogICAgZnJlZUZyb250Q29tcG9uZW50ID0gZnJlZUZyb250RXh0cmE7CiAgICBjb25zdCBzdWIgPSB0YWlsU2Vzc2lvbkNvc3QodGFpbFN0YXJ0LCB3aW5kb3dTdGFydE1pbiwgd2Vla2VuZFR5cGVUYWlsLCBkYXlLZXlUYWlsLCBkZXB0aCArIDEpOwogICAgaWYgKHN1YiAmJiBwcmljZU1pZChzdWIudG90YWwpIDwgZnJlZUZyb250RXh0cmEpIHsKICAgICAgZnJlZUZyb250U3ViID0gc3ViOwogICAgICBmcmVlRnJvbnRDb21wb25lbnQgPSBzdWIudG90YWw7CiAgICB9CiAgfQoKICBjb25zdCBmcmVlQmFja092ZXJhZ2UgPSBNYXRoLm1heCgwLCB0YWlsRW5kIC0gd2luZG93RW5kTWluKTsKICBsZXQgZnJlZUJhY2tNaW51dGVzID0gMCwgZnJlZUJhY2tFeHRyYSA9IDAsIGZyZWVCYWNrQ29tcG9uZW50ID0gMCwgZnJlZUJhY2tTdWIgPSBudWxsOwogIGlmIChmcmVlQmFja092ZXJhZ2UgPiAwKSB7CiAgICBmcmVlQmFja01pbnV0ZXMgPSBNYXRoLmNlaWwoZnJlZUJhY2tPdmVyYWdlLzMwKSozMDsKICAgIGZyZWVCYWNrRXh0cmEgPSAoZnJlZUJhY2tNaW51dGVzLzMwKSAqIEVYVF9SQVRFW2RheUtleVRhaWxdOwogICAgZnJlZUJhY2tDb21wb25lbnQgPSBmcmVlQmFja0V4dHJhOwogICAgY29uc3Qgc3ViID0gdGFpbFNlc3Npb25Db3N0KHdpbmRvd0VuZE1pbiwgdGFpbEVuZCwgd2Vla2VuZFR5cGVUYWlsLCBkYXlLZXlUYWlsLCBkZXB0aCArIDEpOwogICAgaWYgKHN1YiAmJiBwcmljZU1pZChzdWIudG90YWwpIDwgZnJlZUJhY2tFeHRyYSkgewogICAgICBmcmVlQmFja1N1YiA9IHN1YjsKICAgICAgZnJlZUJhY2tDb21wb25lbnQgPSBzdWIudG90YWw7CiAgICB9CiAgfQogIGNvbnN0IGZyZWVUb3RhbCA9IGFkZFByaWNlcyhhZGRQcmljZXMoZnJlZUJhc2UsIGZyZWVCYWNrQ29tcG9uZW50KSwgZnJlZUZyb250Q29tcG9uZW50KTsKCiAgaWYgKHByaWNlTWlkKHJlc3RUb3RhbCkgPD0gcHJpY2VNaWQoZnJlZVRvdGFsKSkgewogICAgcmV0dXJuIHsKICAgICAgcGxhbjogInJlc3Q1aCIsIGJhc2U6IHJlc3RCYXNlLAogICAgICBleHRyYTogcmVzdFN1YiA\/IDAgOiByZXN0RXh0cmEsIGV4dE1pbnV0ZXM6IHJlc3RTdWIgPyAwIDogcmVzdEV4dE1pbnV0ZXMsCiAgICAgIGZyb250RXh0cmE6IDAsIGZyb250TWludXRlczogMCwKICAgICAgZnJvbnRTdWI6IG51bGwsIGJhY2tTdWI6IHJlc3RTdWIsCiAgICAgIHRvdGFsOiByZXN0VG90YWwsIGlzTGltaXRlZDogcmVzdElzTGltaXRlZCwKICAgICAgc3RhcnQ6IHRhaWxTdGFydCwgZW5kOiB0YWlsRW5kCiAgICB9OwogIH0KICByZXR1cm4gewogICAgcGxhbjogImZyZWV0aW1lIiwgYmFzZTogZnJlZUJhc2UsCiAgICBleHRyYTogZnJlZUJhY2tTdWIgPyAwIDogZnJlZUJhY2tFeHRyYSwgZXh0TWludXRlczogZnJlZUJhY2tTdWIgPyAwIDogZnJlZUJhY2tNaW51dGVzLAogICAgZnJvbnRFeHRyYTogZnJlZUZyb250U3ViID8gMCA6IGZyZWVGcm9udEV4dHJhLCBmcm9udE1pbnV0ZXM6IGZyZWVGcm9udFN1YiA\/IDAgOiBmcmVlRnJvbnRNaW51dGVzLAogICAgZnJvbnRTdWI6IGZyZWVGcm9udFN1YiwgYmFja1N1YjogZnJlZUJhY2tTdWIsCiAgICB0b3RhbDogZnJlZVRvdGFsLCBpc0xpbWl0ZWQ6IGZyZWVJc0xpbWl0ZWQsCiAgICBzdGFydDogdGFpbFN0YXJ0LCBlbmQ6IHRhaWxFbmQKICB9Owp9CgpmdW5jdGlvbiByZW5kZXIoKSB7CiAgY29uc3QgdG90YWxFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmY1RvdGFsQW1vdW50Iik7CiAgY29uc3QgYnJlYWtkb3duRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmNCcmVha2Rvd24iKTsKCiAgY29uc3Qgc2FtZURheSA9IHN0YXRlLm91dFNwYW4gPT09ICJzYW1lIjsKICBjb25zdCBvdXRIb2xpZGF5Q2hlY2tib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmNPdXRIb2xpZGF5Iik7CiAgY29uc3Qgb3V0SG9saWRheVJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmY091dEhvbGlkYXlSb3ciKTsKICBjb25zdCBvdXRIb2xpZGF5TG9ja2VkID0gc2FtZURheSAmJiBzdGF0ZS5pbkRheURpc3BsYXkgIT09ICLnpZ0iOwogIGlmIChzYW1lRGF5ICYmIHN0YXRlLmluRGF5RGlzcGxheSA9PT0gIuelnSIgJiYgIW91dEhvbGlkYXlDaGVja2JveC5jaGVja2VkKSB7CiAgICBvdXRIb2xpZGF5Q2hlY2tib3guY2hlY2tlZCA9IHRydWU7CiAgfQogIGlmIChvdXRIb2xpZGF5TG9ja2VkKSB7CiAgICBvdXRIb2xpZGF5Q2hlY2tib3guY2hlY2tlZCA9IGZhbHNlOwogIH0KICBvdXRIb2xpZGF5Q2hlY2tib3guZGlzYWJsZWQgPSBvdXRIb2xpZGF5TG9ja2VkOwogIG91dEhvbGlkYXlSb3cuY2xhc3NMaXN0LnRvZ2dsZSgiZmMtZGlzYWJsZWQiLCBvdXRIb2xpZGF5TG9ja2VkKTsKICBjb25zdCBvdXRIb2xpZGF5ID0gb3V0SG9saWRheUNoZWNrYm94LmNoZWNrZWQ7CgogIGNvbnN0IGluRGF5Q2xhc3MgPSBzdGF0ZS5pbkRheURpc3BsYXk7CiAgY29uc3Qgb3V0RGF5QmFzZSA9IHNhbWVEYXkgPyBzdGF0ZS5pbkRheSA6IG5leHREYXlPZihzdGF0ZS5pbkRheSk7CiAgY29uc3Qgb3V0RGF5Q2xhc3MgPSBvdXRIb2xpZGF5ID8gIuelnSIgOiBvdXREYXlCYXNlOwogIGNvbnN0IG91dERheVRhZ1RleHQgPSBzdGF0ZS5pbkRheURpc3BsYXkgPT09ICLnpZ0iCiAgICA\/IChvdXREYXlDbGFzcyA9PT0gIuelnSIgPyAi56Wd5pelIiA6ICLlubPml6UiKQogICAgOiBvdXREYXlDbGFzcyArICLmm5wiOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmY091dERheVRhZyIpLnRleHRDb250ZW50ID0gKHNhbWVEYXkgPyAi5b2T5pelIiA6ICLnv4zml6UiKSArICLjg7siICsgb3V0RGF5VGFnVGV4dDsKCiAgY29uc3QgZW50cnlNaW4gPSBzdGF0ZS5pblRpbWVNaW47CiAgY29uc3QgZXhpdE1pbiA9IHN0YXRlLm91dFRpbWVNaW47CiAgY29uc3QgaW5UaW1lID0gZm10VGltZShlbnRyeU1pbik7CiAgY29uc3Qgb3V0VGltZSA9IGZtdFRpbWUoZXhpdE1pbik7CgogIGxldCBkdXJhdGlvbk1pbjsKICBpZiAoc2FtZURheSkgewogICAgZHVyYXRpb25NaW4gPSBleGl0TWluIC0gZW50cnlNaW47CiAgICBpZiAoZHVyYXRpb25NaW4gPD0gMCkgewogICAgICB0b3RhbEVsLnRleHRDb250ZW50ID0gIi0iOwogICAgICBicmVha2Rvd25FbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0iZmMtZXJyb3IiPuW9k+aXpemAgOWupOOBruWgtOWQiOOAgemAgOWupOaZguWIu+OBr+WFpeWupOaZguWIu+OCiOOCiuW+jOOBq+OBl+OBpuOBj+OBoOOBleOBhDwvZGl2Pic7CiAgICAgIHJldHVybjsKICAgIH0KICB9IGVsc2UgewogICAgZHVyYXRpb25NaW4gPSAoMTQ0MCAtIGVudHJ5TWluKSArIGV4aXRNaW47CiAgfQoKICBjb25zdCBwID0gUFJJQ0VTW3N0YXRlLmZhY2lsaXR5XTsKICBjb25zdCB3ZWVrZW5kVHlwZSA9IGlzV2Vla2VuZFR5cGUoaW5EYXlDbGFzcyk7CiAgY29uc3QgZXh0RGF5S2V5ID0gaXNXZWVrZW5kVHlwZShvdXREYXlDbGFzcykgPyAid2Vla2VuZCIgOiAid2Vla2RheSI7CiAgbGV0IHBsYW4sIGJhc2UsIGV4dHJhID0gMCwgZnJvbnRFeHRyYSA9IDAsCiAgICAgIHBhdHRlcm5MYWJlbCA9ICIiLCBpc0xpbWl0ZWQgPSBmYWxzZSwKICAgICAgZnJvbnRUYWlsID0gbnVsbCwgYmFja1RhaWwgPSBudWxsLAogICAgICBiYXNlUmFuZ2VMYWJlbCA9ICIiLCBmcm9udFJhbmdlTGFiZWwgPSAiIiwgYmFja1JhbmdlTGFiZWwgPSAiIjsKCiAgaWYgKHNhbWVEYXkpIHsKICAgIGlmIChkdXJhdGlvbk1pbiA8PSAxMzApIHsKICAgICAgcGxhbiA9ICJzaG9ydCI7CiAgICAgIGJhc2UgPSBwLnNob3J0W3dlZWtlbmRUeXBlID8gIndlZWtlbmQiIDogIndlZWtkYXkiXTsKICAgICAgYmFzZVJhbmdlTGFiZWwgPSBgJHtpblRpbWV944CcJHtvdXRUaW1lfWA7CiAgICB9IGVsc2UgewogICAgICBjb25zdCBkYXlLZXkgPSB3ZWVrZW5kVHlwZSA\/ICJ3ZWVrZW5kIiA6ICJ3ZWVrZGF5IjsKCiAgICAgIGNvbnN0IHJlc3RCQjIgPSBiZXN0QmFzZShwLnJlc3Q1aCwgZGF5S2V5KTsKICAgICAgY29uc3QgcmVzdEJhc2UgPSByZXN0QkIyLmJhc2UsIHJlc3RJc0xpbWl0ZWQgPSByZXN0QkIyLmlzTGltaXRlZDsKICAgICAgY29uc3QgcmVzdE92ZXJhZ2UgPSBNYXRoLm1heCgwLCBkdXJhdGlvbk1pbiAtIDMwMCk7CiAgICAgIGxldCByZXN0RXh0TWludXRlcyA9IDAsIHJlc3RFeHRyYSA9IDAsIHJlc3RDb21wb25lbnQgPSAwLCByZXN0VGFpbCA9IG51bGw7CiAgICAgIGlmIChyZXN0T3ZlcmFnZSA+IDApIHsKICAgICAgICByZXN0RXh0TWludXRlcyA9IE1hdGguY2VpbChyZXN0T3ZlcmFnZS8zMCkqMzA7CiAgICAgICAgcmVzdEV4dHJhID0gKHJlc3RFeHRNaW51dGVzLzMwKSAqIEVYVF9SQVRFW2RheUtleV07CiAgICAgICAgcmVzdENvbXBvbmVudCA9IHJlc3RFeHRyYTsKICAgICAgICBjb25zdCB0YWlsID0gdGFpbFNlc3Npb25Db3N0KGVudHJ5TWluICsgMzAwLCBleGl0TWluLCB3ZWVrZW5kVHlwZSwgZGF5S2V5KTsKICAgICAgICBpZiAodGFpbCAmJiBwcmljZU1pZCh0YWlsLnRvdGFsKSA8IHJlc3RFeHRyYSkgewogICAgICAgICAgcmVzdFRhaWwgPSB0YWlsOwogICAgICAgICAgcmVzdENvbXBvbmVudCA9IHRhaWwudG90YWw7CiAgICAgICAgfQogICAgICB9CiAgICAgIGNvbnN0IHJlc3RUb3RhbCA9IGFkZFByaWNlcyhyZXN0QmFzZSwgcmVzdENvbXBvbmVudCk7CgogICAgICBjb25zdCBmcmVlQkIyID0gYmVzdEJhc2UocC5mcmVldGltZSwgZGF5S2V5KTsKICAgICAgY29uc3QgZnJlZUJhc2UgPSBmcmVlQkIyLmJhc2UsIGZyZWVJc0xpbWl0ZWQgPSBmcmVlQkIyLmlzTGltaXRlZDsKICAgICAgY29uc3Qgd2luZG93U3RhcnRNaW4gPSA1KjYwOwogICAgICBjb25zdCB3aW5kb3dFbmRNaW4gPSB3ZWVrZW5kVHlwZSA\/IDIwKjYwIDogMjMqNjA7CgogICAgICBjb25zdCBmcmVlRnJvbnRPdmVyYWdlID0gTWF0aC5tYXgoMCwgd2luZG93U3RhcnRNaW4gLSBlbnRyeU1pbik7CiAgICAgIGxldCBmcmVlRnJvbnRNaW51dGVzID0gMCwgZnJlZUZyb250RXh0cmEgPSAwLCBmcmVlRnJvbnRDb21wb25lbnQgPSAwLCBmcmVlRnJvbnRUYWlsID0gbnVsbDsKICAgICAgaWYgKGZyZWVGcm9udE92ZXJhZ2UgPiAwKSB7CiAgICAgICAgZnJlZUZyb250TWludXRlcyA9IE1hdGguY2VpbChmcmVlRnJvbnRPdmVyYWdlLzMwKSozMDsKICAgICAgICBmcmVlRnJvbnRFeHRyYSA9IChmcmVlRnJvbnRNaW51dGVzLzMwKSAqIEVYVF9SQVRFW2RheUtleV07CiAgICAgICAgZnJlZUZyb250Q29tcG9uZW50ID0gZnJlZUZyb250RXh0cmE7CiAgICAgICAgY29uc3QgdGFpbCA9IHRhaWxTZXNzaW9uQ29zdChlbnRyeU1pbiwgd2luZG93U3RhcnRNaW4sIHdlZWtlbmRUeXBlLCBkYXlLZXkpOwogICAgICAgIGlmICh0YWlsICYmIHByaWNlTWlkKHRhaWwudG90YWwpIDwgZnJlZUZyb250RXh0cmEpIHsKICAgICAgICAgIGZyZWVGcm9udFRhaWwgPSB0YWlsOwogICAgICAgICAgZnJlZUZyb250Q29tcG9uZW50ID0gdGFpbC50b3RhbDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNvbnN0IGZyZWVPdmVyYWdlID0gTWF0aC5tYXgoMCwgZXhpdE1pbiAtIHdpbmRvd0VuZE1pbik7CiAgICAgIGxldCBmcmVlRXh0TWludXRlcyA9IDAsIGZyZWVFeHRyYSA9IDAsIGZyZWVCYWNrQ29tcG9uZW50ID0gMCwgZnJlZUJhY2tUYWlsID0gbnVsbDsKICAgICAgaWYgKGZyZWVPdmVyYWdlID4gMCkgewogICAgICAgIGZyZWVFeHRNaW51dGVzID0gTWF0aC5jZWlsKGZyZWVPdmVyYWdlLzMwKSozMDsKICAgICAgICBmcmVlRXh0cmEgPSAoZnJlZUV4dE1pbnV0ZXMvMzApICogRVhUX1JBVEVbZGF5S2V5XTsKICAgICAgICBmcmVlQmFja0NvbXBvbmVudCA9IGZyZWVFeHRyYTsKICAgICAgICBjb25zdCB0YWlsID0gdGFpbFNlc3Npb25Db3N0KHdpbmRvd0VuZE1pbiwgZXhpdE1pbiwgd2Vla2VuZFR5cGUsIGRheUtleSk7CiAgICAgICAgaWYgKHRhaWwgJiYgcHJpY2VNaWQodGFpbC50b3RhbCkgPCBmcmVlRXh0cmEpIHsKICAgICAgICAgIGZyZWVCYWNrVGFpbCA9IHRhaWw7CiAgICAgICAgICBmcmVlQmFja0NvbXBvbmVudCA9IHRhaWwudG90YWw7CiAgICAgICAgfQogICAgICB9CiAgICAgIGNvbnN0IGZyZWVUb3RhbCA9IGFkZFByaWNlcyhhZGRQcmljZXMoZnJlZUJhc2UsIGZyZWVCYWNrQ29tcG9uZW50KSwgZnJlZUZyb250Q29tcG9uZW50KTsKCiAgICAgIGNvbnN0IHByZXZEYXlDbGFzcyA9IHByZXZEYXlPZihzdGF0ZS5pbkRheSk7CiAgICAgIGNvbnN0IHByZXZXZWVrZW5kVHlwZSA9IGlzV2Vla2VuZFR5cGUocHJldkRheUNsYXNzKTsKICAgICAgY29uc3Qgc3RheVBhdHRlcm5LZXlQcmV2ID0gc3RheVBhdHRlcm4ocHJldkRheUNsYXNzLCBvdXREYXlDbGFzcyk7CiAgICAgIGxldCBzdGF5TGFiZWxQcmV2ID0gU1RBWV9MQUJFTFtzdGF5UGF0dGVybktleVByZXZdOwogICAgICBsZXQgc3RheUNoZWNraW4sIHN0YXlDaGVja291dDsKICAgICAgaWYgKHN0YXlQYXR0ZXJuS2V5UHJldiA9PT0gInNodWt1UGVhayIpIHsKICAgICAgICBjb25zdCBpY2hpYnUgPSBlbnRyeU1pbiA8ICgxOSo2MCszMCk7CiAgICAgICAgc3RheUNoZWNraW4gPSBpY2hpYnUgPyAiMTg6MDAiIDogIjIxOjAwIjsKICAgICAgICBzdGF5Q2hlY2tvdXQgPSBpY2hpYnUgPyAiMTA6MDAiIDogIjEyOjAwIjsKICAgICAgICBzdGF5TGFiZWxQcmV2ICs9IGljaGlidSA\/ICLvvIjkuIDpg6ggMTg6MDDvvZ7nv4wxMDowMO+8iSIgOiAi77yI44OL6YOoIDIxOjAw772e57+MMTI6MDDvvIkiOwogICAgICB9IGVsc2UgewogICAgICAgIHN0YXlDaGVja2luID0gU1RBWV9TVEFOREFSRF9DSEVDS0lOW3N0YXlQYXR0ZXJuS2V5UHJldl07CiAgICAgICAgc3RheUNoZWNrb3V0ID0gU1RBWV9TVEFOREFSRF9DSEVDS09VVFtzdGF5UGF0dGVybktleVByZXZdOwogICAgICB9CiAgICAgIGNvbnN0IHN0YXlDaGVja2luTWluID0gbWludXRlc09mRGF5KHN0YXlDaGVja2luKTsKICAgICAgY29uc3Qgc3RheUZyb250T3ZlcmFnZSA9IE1hdGgubWF4KDAsIHN0YXlDaGVja2luTWluIC0gKGVudHJ5TWluICsgMTQ0MCkpOwogICAgICBjb25zdCBzdGF5RnJvbnRNaW51dGVzID0gc3RheUZyb250T3ZlcmFnZSA+IDAgPyBNYXRoLmNlaWwoc3RheUZyb250T3ZlcmFnZS8zMCkqMzAgOiAwOwogICAgICBjb25zdCBzdGF5RnJvbnRFeHRyYSA9IChzdGF5RnJvbnRNaW51dGVzLzMwKSAqIEVYVF9SQVRFW3ByZXZXZWVrZW5kVHlwZSA\/ICJ3ZWVrZW5kIiA6ICJ3ZWVrZGF5Il07CiAgICAgIGNvbnN0IHN0YXlDaGVja291dE1pbiA9IG1pbnV0ZXNPZkRheShzdGF5Q2hlY2tvdXQpOwogICAgICBjb25zdCBzdGF5QmFja092ZXJhZ2UgPSBNYXRoLm1heCgwLCBleGl0TWluIC0gc3RheUNoZWNrb3V0TWluKTsKICAgICAgbGV0IHN0YXlCYWNrTWludXRlcyA9IDAsIHN0YXlCYWNrRXh0cmEgPSAwLCBzdGF5QmFja0NvbXBvbmVudCA9IDAsIHN0YXlCYWNrVGFpbCA9IG51bGw7CiAgICAgIGlmIChzdGF5QmFja092ZXJhZ2UgPiAwKSB7CiAgICAgICAgc3RheUJhY2tNaW51dGVzID0gTWF0aC5jZWlsKHN0YXlCYWNrT3ZlcmFnZS8zMCkqMzA7CiAgICAgICAgc3RheUJhY2tFeHRyYSA9IChzdGF5QmFja01pbnV0ZXMvMzApICogRVhUX1JBVEVbZXh0RGF5S2V5XTsKICAgICAgICBzdGF5QmFja0NvbXBvbmVudCA9IHN0YXlCYWNrRXh0cmE7CiAgICAgICAgY29uc3QgdGFpbCA9IHRhaWxTZXNzaW9uQ29zdChzdGF5Q2hlY2tvdXRNaW4sIGV4aXRNaW4sIGV4dERheUtleSA9PT0gIndlZWtlbmQiLCBleHREYXlLZXkpOwogICAgICAgIGlmICh0YWlsICYmIHByaWNlTWlkKHRhaWwudG90YWwpIDwgc3RheUJhY2tFeHRyYSkgewogICAgICAgICAgc3RheUJhY2tUYWlsID0gdGFpbDsKICAgICAgICAgIHN0YXlCYWNrQ29tcG9uZW50ID0gdGFpbC50b3RhbDsKICAgICAgICB9CiAgICAgIH0KICAgICAgY29uc3Qgc3RheUJCID0gYmVzdEJhc2UocC5zdGF5LCBzdGF5UGF0dGVybktleVByZXYpOwogICAgICBjb25zdCBzdGF5QmFzZVByZXYgPSBzdGF5QkIuYmFzZSwgc3RheUlzTGltaXRlZFByZXYgPSBzdGF5QkIuaXNMaW1pdGVkOwogICAgICBjb25zdCBzdGF5VG90YWxQcmV2ID0gYWRkUHJpY2VzKGFkZFByaWNlcyhzdGF5QmFzZVByZXYsIHN0YXlCYWNrQ29tcG9uZW50KSwgc3RheUZyb250RXh0cmEpOwoKICAgICAgY29uc3QgYmVzdCA9IE1hdGgubWluKHByaWNlTWlkKHJlc3RUb3RhbCksIHByaWNlTWlkKGZyZWVUb3RhbCksIHByaWNlTWlkKHN0YXlUb3RhbFByZXYpKTsKCiAgICAgIGlmIChiZXN0ID09PSBwcmljZU1pZChzdGF5VG90YWxQcmV2KSkgewogICAgICAgIHBsYW4gPSAic3RheSI7CiAgICAgICAgcGF0dGVybkxhYmVsID0gc3RheUxhYmVsUHJldjsKICAgICAgICBpc0xpbWl0ZWQgPSBzdGF5SXNMaW1pdGVkUHJldjsKICAgICAgICBiYXNlID0gc3RheUJhc2VQcmV2OwogICAgICAgIGJhc2VSYW5nZUxhYmVsID0gYCR7aW5UaW1lfeOAnCR7Zm10VGltZShzdGF5Q2hlY2tvdXRNaW4pfWA7CiAgICAgICAgaWYgKHN0YXlCYWNrT3ZlcmFnZSA+IDApIGJhY2tSYW5nZUxhYmVsID0gYCR7Zm10VGltZShzdGF5Q2hlY2tvdXRNaW4pfeOAnCR7b3V0VGltZX1gOwogICAgICAgIGlmIChzdGF5QmFja1RhaWwpIHsKICAgICAgICAgIGJhY2tUYWlsID0gc3RheUJhY2tUYWlsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBleHRyYSA9IHN0YXlCYWNrRXh0cmE7CiAgICAgICAgfQogICAgICAgIGZyb250RXh0cmEgPSBzdGF5RnJvbnRFeHRyYTsKICAgICAgfSBlbHNlIGlmIChiZXN0ID09PSBwcmljZU1pZChyZXN0VG90YWwpKSB7CiAgICAgICAgcGxhbiA9ICJyZXN0NWgiOwogICAgICAgIGlzTGltaXRlZCA9IHJlc3RJc0xpbWl0ZWQ7CiAgICAgICAgYmFzZSA9IHJlc3RCYXNlOwogICAgICAgIGNvbnN0IHJlc3RCYXNlRW5kID0gTWF0aC5taW4oZXhpdE1pbiwgZW50cnlNaW4gKyAzMDApOwogICAgICAgIGJhc2VSYW5nZUxhYmVsID0gYCR7aW5UaW1lfeOAnCR7Zm10VGltZShyZXN0QmFzZUVuZCl9YDsKICAgICAgICBpZiAocmVzdE92ZXJhZ2UgPiAwKSBiYWNrUmFuZ2VMYWJlbCA9IGAke2ZtdFRpbWUocmVzdEJhc2VFbmQpfeOAnCR7b3V0VGltZX1gOwogICAgICAgIGlmIChyZXN0VGFpbCkgewogICAgICAgICAgYmFja1RhaWwgPSByZXN0VGFpbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZXh0cmEgPSByZXN0RXh0cmE7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHBsYW4gPSAiZnJlZXRpbWUiOwogICAgICAgIGlzTGltaXRlZCA9IGZyZWVJc0xpbWl0ZWQ7CiAgICAgICAgYmFzZSA9IGZyZWVCYXNlOwogICAgICAgIGNvbnN0IGZyZWVCYXNlU3RhcnQgPSBNYXRoLm1heChlbnRyeU1pbiwgd2luZG93U3RhcnRNaW4pOwogICAgICAgIGNvbnN0IGZyZWVCYXNlRW5kID0gTWF0aC5taW4oZXhpdE1pbiwgd2luZG93RW5kTWluKTsKICAgICAgICBiYXNlUmFuZ2VMYWJlbCA9IGAke2ZtdFRpbWUoZnJlZUJhc2VTdGFydCl944CcJHtmbXRUaW1lKGZyZWVCYXNlRW5kKX1gOwogICAgICAgIGlmIChmcmVlT3ZlcmFnZSA+IDApIGJhY2tSYW5nZUxhYmVsID0gYCR7Zm10VGltZSh3aW5kb3dFbmRNaW4pfeOAnCR7b3V0VGltZX1gOwogICAgICAgIGlmIChmcmVlQmFja1RhaWwpIHsKICAgICAgICAgIGJhY2tUYWlsID0gZnJlZUJhY2tUYWlsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBleHRyYSA9IGZyZWVFeHRyYTsKICAgICAgICB9CiAgICAgICAgaWYgKGZyZWVGcm9udE92ZXJhZ2UgPiAwKSBmcm9udFJhbmdlTGFiZWwgPSBgJHtpblRpbWV944CcJHtmbXRUaW1lKHdpbmRvd1N0YXJ0TWluKX1gOwogICAgICAgIGlmIChmcmVlRnJvbnRUYWlsKSB7CiAgICAgICAgICBmcm9udFRhaWwgPSBmcmVlRnJvbnRUYWlsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmcm9udEV4dHJhID0gZnJlZUZyb250RXh0cmE7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSBlbHNlIHsKICAgIHBsYW4gPSAic3RheSI7CiAgICBjb25zdCBwYXR0ZXJuS2V5ID0gc3RheVBhdHRlcm4oaW5EYXlDbGFzcywgb3V0RGF5Q2xhc3MpOwogICAgcGF0dGVybkxhYmVsID0gU1RBWV9MQUJFTFtwYXR0ZXJuS2V5XTsKICAgIGNvbnN0IHN0YXlCQjMgPSBiZXN0QmFzZShwLnN0YXksIHBhdHRlcm5LZXkpOwogICAgYmFzZSA9IHN0YXlCQjMuYmFzZTsgaXNMaW1pdGVkID0gc3RheUJCMy5pc0xpbWl0ZWQ7CgogICAgbGV0IGNoZWNraW5TdGFuZGFyZCwgY2hlY2tvdXREZWFkbGluZTsKICAgIGlmIChwYXR0ZXJuS2V5ID09PSAic2h1a3VQZWFrIikgewogICAgICBjb25zdCBpY2hpYnUgPSBlbnRyeU1pbiA8ICgxOSo2MCszMCk7CiAgICAgIGNoZWNraW5TdGFuZGFyZCA9IGljaGlidSA\/ICIxODowMCIgOiAiMjE6MDAiOwogICAgICBjaGVja291dERlYWRsaW5lID0gaWNoaWJ1ID8gIjEwOjAwIiA6ICIxMjowMCI7CiAgICAgIHBhdHRlcm5MYWJlbCArPSBpY2hpYnUgPyAi77yI5LiA6YOoIDE4OjAw772e57+MMTA6MDDvvIkiIDogIu+8iOODi+mDqCAyMTowMO+9nue\/jDEyOjAw77yJIjsKICAgIH0gZWxzZSB7CiAgICAgIGNoZWNraW5TdGFuZGFyZCA9IFNUQVlfU1RBTkRBUkRfQ0hFQ0tJTltwYXR0ZXJuS2V5XTsKICAgICAgY2hlY2tvdXREZWFkbGluZSA9IFNUQVlfU1RBTkRBUkRfQ0hFQ0tPVVRbcGF0dGVybktleV07CiAgICB9CgogICAgY29uc3QgY2hlY2tpblN0YW5kYXJkTWluID0gbWludXRlc09mRGF5KGNoZWNraW5TdGFuZGFyZCk7CiAgICBpZiAoZW50cnlNaW4gPCBjaGVja2luU3RhbmRhcmRNaW4pIHsKICAgICAgY29uc3Qgb3ZlcmFnZSA9IGNoZWNraW5TdGFuZGFyZE1pbiAtIGVudHJ5TWluOwogICAgICBjb25zdCBwbGFpbkZyb250TWludXRlcyA9IE1hdGguY2VpbChvdmVyYWdlLzMwKSozMDsKICAgICAgY29uc3QgcGxhaW5Gcm9udEV4dHJhID0gKHBsYWluRnJvbnRNaW51dGVzLzMwKSAqIEVYVF9SQVRFW3dlZWtlbmRUeXBlID8gIndlZWtlbmQiIDogIndlZWtkYXkiXTsKICAgICAgZnJvbnRSYW5nZUxhYmVsID0gYCR7aW5UaW1lfeOAnCR7Zm10VGltZShjaGVja2luU3RhbmRhcmRNaW4pfWA7CiAgICAgIGNvbnN0IHRhaWwgPSB0YWlsU2Vzc2lvbkNvc3QoZW50cnlNaW4sIGNoZWNraW5TdGFuZGFyZE1pbiwgd2Vla2VuZFR5cGUsIHdlZWtlbmRUeXBlID8gIndlZWtlbmQiIDogIndlZWtkYXkiKTsKICAgICAgaWYgKHRhaWwgJiYgcHJpY2VNaWQodGFpbC50b3RhbCkgPCBwbGFpbkZyb250RXh0cmEpIHsKICAgICAgICBmcm9udFRhaWwgPSB0YWlsOwogICAgICB9IGVsc2UgewogICAgICAgIGZyb250RXh0cmEgPSBwbGFpbkZyb250RXh0cmE7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdCBkZWFkbGluZU1pbiA9IG1pbnV0ZXNPZkRheShjaGVja291dERlYWRsaW5lKTsKICAgIGlmIChleGl0TWluID4gZGVhZGxpbmVNaW4pIHsKICAgICAgY29uc3Qgb3ZlcmFnZSA9IGV4aXRNaW4gLSBkZWFkbGluZU1pbjsKICAgICAgY29uc3QgcGxhaW5FeHRNaW51dGVzID0gTWF0aC5jZWlsKG92ZXJhZ2UvMzApKjMwOwogICAgICBjb25zdCBwbGFpbkV4dHJhID0gKHBsYWluRXh0TWludXRlcy8zMCkgKiBFWFRfUkFURVtleHREYXlLZXldOwogICAgICBiYWNrUmFuZ2VMYWJlbCA9IGDnv4wke2ZtdFRpbWUoZGVhZGxpbmVNaW4pfeOAnOe\/jCR7b3V0VGltZX1gOwogICAgICBjb25zdCB0YWlsID0gdGFpbFNlc3Npb25Db3N0KGRlYWRsaW5lTWluLCBleGl0TWluLCBleHREYXlLZXkgPT09ICJ3ZWVrZW5kIiwgZXh0RGF5S2V5KTsKICAgICAgaWYgKHRhaWwgJiYgcHJpY2VNaWQodGFpbC50b3RhbCkgPCBwbGFpbkV4dHJhKSB7CiAgICAgICAgYmFja1RhaWwgPSB0YWlsOwogICAgICB9IGVsc2UgewogICAgICAgIGV4dHJhID0gcGxhaW5FeHRyYTsKICAgICAgfQogICAgfQoKICAgIGNvbnN0IGJhc2VTdGFydE1pbiA9IE1hdGgubWF4KGVudHJ5TWluLCBjaGVja2luU3RhbmRhcmRNaW4pOwogICAgY29uc3QgYmFzZUVuZE1pbiA9IE1hdGgubWluKGV4aXRNaW4sIGRlYWRsaW5lTWluKTsKICAgIGJhc2VSYW5nZUxhYmVsID0gYCR7Zm10VGltZShiYXNlU3RhcnRNaW4pfeOAnOe\/jCR7Zm10VGltZShiYXNlRW5kTWluKX1gOwogIH0KCiAgY29uc3QgZnJvbnRDb21wb25lbnQgPSBmcm9udFRhaWwgPyBmcm9udFRhaWwudG90YWwgOiBmcm9udEV4dHJhOwogIGNvbnN0IGJhY2tDb21wb25lbnQgPSBiYWNrVGFpbCA\/IGJhY2tUYWlsLnRvdGFsIDogZXh0cmE7CiAgY29uc3QgdG90YWwgPSBhZGRQcmljZXMoYWRkUHJpY2VzKGJhc2UsIGJhY2tDb21wb25lbnQpLCBmcm9udENvbXBvbmVudCk7CiAgdG90YWxFbC50ZXh0Q29udGVudCA9IHByaWNlTGFiZWwodG90YWwpOwoKICBmdW5jdGlvbiBmb3JtYXRBYnNUaW1lKG1pbikgewogICAgcmV0dXJuIChtaW4gPj0gMTQ0MCA\/ICLnv4wiIDogIiIpICsgZm10VGltZShtaW4pOwogIH0KCiAgY29uc3Qgc2VnbWVudHMgPSBbXTsKICBpZiAoZnJvbnRUYWlsKSB7CiAgICBjb25zdCBmc19mZSA9IHBhcnNlUmFuZ2VMYWJlbChmcm9udFJhbmdlTGFiZWwpOwogICAgZmxhdHRlblRhaWxHbG9iYWwoZnJvbnRUYWlsLCBmc19mZVswXSwgZnNfZmVbMV0sIHNlZ21lbnRzKTsKICB9IGVsc2UgaWYgKGZyb250RXh0cmEgPiAwKSB7CiAgICBjb25zdCBmc19mZSA9IHBhcnNlUmFuZ2VMYWJlbChmcm9udFJhbmdlTGFiZWwpOwogICAgc2VnbWVudHMucHVzaCh7IGxhYmVsOiAi5bu26ZW3IiwgcHJpY2U6IGZvcm1hdFllbihmcm9udEV4dHJhKSwgc3RhcnQ6IGZzX2ZlWzBdLCBlbmQ6IGZzX2ZlWzFdLCBpc0V4dDogdHJ1ZSB9KTsKICB9CiAgewogICAgY29uc3QgYnNfYmUgPSBwYXJzZVJhbmdlTGFiZWwoYmFzZVJhbmdlTGFiZWwpOwogICAgc2VnbWVudHMucHVzaCh7IGxhYmVsOiBQTEFOX0xBQkVMW3BsYW5dLCBwcmljZTogcHJpY2VMYWJlbChiYXNlKSwgc3RhcnQ6IGJzX2JlWzBdLCBlbmQ6IGJzX2JlWzFdLCBpc0V4dDogZmFsc2UsIHN1YkxhYmVsOiBwbGFuID09PSAic3RheSIgPyBwYXR0ZXJuTGFiZWwgOiBudWxsIH0pOwogIH0KICBpZiAoYmFja1RhaWwpIHsKICAgIGNvbnN0IGJzX2JlID0gcGFyc2VSYW5nZUxhYmVsKGJhY2tSYW5nZUxhYmVsKTsKICAgIGZsYXR0ZW5UYWlsR2xvYmFsKGJhY2tUYWlsLCBic19iZVswXSwgYnNfYmVbMV0sIHNlZ21lbnRzKTsKICB9IGVsc2UgaWYgKGV4dHJhID4gMCkgewogICAgY29uc3QgYnNfYmUgPSBwYXJzZVJhbmdlTGFiZWwoYmFja1JhbmdlTGFiZWwpOwogICAgc2VnbWVudHMucHVzaCh7IGxhYmVsOiAi5bu26ZW3IiwgcHJpY2U6IGZvcm1hdFllbihleHRyYSksIHN0YXJ0OiBic19iZVswXSwgZW5kOiBic19iZVsxXSwgaXNFeHQ6IHRydWUgfSk7CiAgfQogIHNlZ21lbnRzLnNvcnQoKGEsIGIpID0+IGEuc3RhcnQgLSBiLnN0YXJ0KTsKCiAgY29uc3QgZXhpdERheUlkeCA9IHNhbWVEYXkgPyAwIDogMTsKICBmdW5jdGlvbiBkYXlUYWdGb3JTZWdtZW50KHNlZykgewogICAgY29uc3QgZGF5SWR4ID0gTWF0aC5mbG9vcigoc2VnLnN0YXJ0ICsgc2VnLmVuZCkgLyAyIC8gMTQ0MCk7CiAgICBsZXQgZGF5Q2xhc3M7CiAgICBpZiAoZGF5SWR4IDw9IDApIGRheUNsYXNzID0gaW5EYXlDbGFzczsKICAgIGVsc2UgaWYgKGRheUlkeCA9PT0gZXhpdERheUlkeCkgZGF5Q2xhc3MgPSBvdXREYXlDbGFzczsKICAgIGVsc2UgewogICAgICBsZXQgZCA9IHN0YXRlLmluRGF5OwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRheUlkeDsgaSsrKSBkID0gbmV4dERheU9mKGQpOwogICAgICBkYXlDbGFzcyA9IGQ7CiAgICB9CiAgICByZXR1cm4gaXNXZWVrZW5kVHlwZShkYXlDbGFzcykgPyAi5Zyf5pel56WdIiA6ICLlubPml6UiOwogIH0KICBzZWdtZW50cy5mb3JFYWNoKHNlZyA9PiB7CiAgICBpZiAoIXNlZy5zdWJMYWJlbCkgc2VnLnN1YkxhYmVsID0gZGF5VGFnRm9yU2VnbWVudChzZWcpOwogIH0pOwoKICBjb25zdCBwbGFuVGV4dCA9IFtdOwogIHNlZ21lbnRzLmZvckVhY2goc2VnID0+IHsKICAgIGlmICghc2VnLmlzRXh0ICYmIHBsYW5UZXh0LmluZGV4T2Yoc2VnLmxhYmVsKSA9PT0gLTEpIHBsYW5UZXh0LnB1c2goc2VnLmxhYmVsKTsKICB9KTsKCiAgY29uc3QgQ0lSQ0xFRCA9IFsi4pGgIiwi4pGhIiwi4pGiIiwi4pGjIiwi4pGkIiwi4pGlIiwi4pGmIiwi4pGnIiwi4pGoIiwi4pGpIiwi4pGqIiwi4pGrIl07CiAgY29uc3QgU0VHX0NPTE9SID0geyBzaG9ydDogIiNjOWE0ZGUiLCByZXN0NWg6ICIjN2ZiM2Q1IiwgZnJlZXRpbWU6ICIjZjRhMjYxIiwgc3RheTogIiM3YjNmOWUiLCAi5bu26ZW3IjogIiNhZGI1YmQiIH07CiAgZnVuY3Rpb24gc2VnQ29sb3Ioc2VnKSB7CiAgICBpZiAoc2VnLmlzRXh0KSByZXR1cm4gU0VHX0NPTE9SWyLlu7bplbciXTsKICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKFBMQU5fTEFCRUwpLmZpbmQoayA9PiBQTEFOX0xBQkVMW2tdID09PSBzZWcubGFiZWwpOwogICAgcmV0dXJuIFNFR19DT0xPUltrZXldIHx8ICIjOTk5IjsKICB9CgogIGNvbnN0IHRpbWVsaW5lU3RhcnQgPSBzZWdtZW50c1swXS5zdGFydDsKICBjb25zdCB0aW1lbGluZUVuZCA9IHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdLmVuZDsKICBjb25zdCB0aW1lbGluZVNwYW4gPSBNYXRoLm1heCgxLCB0aW1lbGluZUVuZCAtIHRpbWVsaW5lU3RhcnQpOwogIGNvbnN0IGJhckh0bWwgPSBzZWdtZW50cy5tYXAoc2VnID0+IHsKICAgIGNvbnN0IHdpZHRoUGN0ID0gKHNlZy5lbmQgLSBzZWcuc3RhcnQpIC8gdGltZWxpbmVTcGFuICogMTAwOwogICAgY29uc3QgY29sb3IgPSBzZWdDb2xvcihzZWcpOwogICAgY29uc3Qgc3RyaXBlID0gc2VnLmlzRXh0ID8gImJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LDI1NSwyNTUsMC4zNSkgMCA2cHgsIHRyYW5zcGFyZW50IDZweCAxMnB4KTsiIDogIiI7CiAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImZjLXRsLXNlZyIgc3R5bGU9ImZsZXgtYmFzaXM6JHt3aWR0aFBjdH0lOyBiYWNrZ3JvdW5kOiR7Y29sb3J9OyAke3N0cmlwZX0iIHRpdGxlPSIke3NlZy5sYWJlbH3vvIgke3NlZy5zdWJMYWJlbH3vvIkgJHtmb3JtYXRBYnNUaW1lKHNlZy5zdGFydCl944CcJHtmb3JtYXRBYnNUaW1lKHNlZy5lbmQpfSAke3NlZy5wcmljZX0iPgogICAgICA8c3BhbiBjbGFzcz0iZmMtdGwtc2VnLWxhYmVsIj4ke3NlZy5sYWJlbH08YnI+PHNwYW4gY2xhc3M9ImZjLXRsLXNlZy1zdWIiPiR7c2VnLnN1YkxhYmVsfTwvc3Bhbj48L3NwYW4+CiAgICA8L2Rpdj5gOwogIH0pLmpvaW4oIiIpOwogIGNvbnN0IGRheU1hcmtlcnMgPSBbXTsKICBmb3IgKGxldCBrID0gTWF0aC5mbG9vcih0aW1lbGluZVN0YXJ0LzE0NDApICsgMTsgayoxNDQwIDwgdGltZWxpbmVFbmQ7IGsrKykgewogICAgaWYgKGsqMTQ0MCA+IHRpbWVsaW5lU3RhcnQpIGRheU1hcmtlcnMucHVzaChrKTsKICB9CiAgY29uc3QgZGF5TGluZUh0bWwgPSBkYXlNYXJrZXJzLm1hcChrID0+IHsKICAgIGNvbnN0IHBjdCA9IChrKjE0NDAgLSB0aW1lbGluZVN0YXJ0KSAvIHRpbWVsaW5lU3BhbiAqIDEwMDsKICAgIHJldHVybiBgPGRpdiBjbGFzcz0iZmMtdGwtZGF5YnJlYWsiIHN0eWxlPSJsZWZ0OiR7cGN0fSUiPjwvZGl2PmA7CiAgfSkuam9pbigiIik7CgogIGNvbnN0IGF4aXNJdGVtcyA9IFt7IHBjdDogMCwgdGV4dDogZm9ybWF0QWJzVGltZSh0aW1lbGluZVN0YXJ0KSwgYWxpZ246ICJzdGFydCIgfV07CiAgZGF5TWFya2Vycy5mb3JFYWNoKGsgPT4gewogICAgY29uc3QgcGN0ID0gKGsqMTQ0MCAtIHRpbWVsaW5lU3RhcnQpIC8gdGltZWxpbmVTcGFuICogMTAwOwogICAgYXhpc0l0ZW1zLnB1c2goeyBwY3QsIHRleHQ6ICIwOjAwIiwgYWxpZ246ICJtaWQiIH0pOwogIH0pOwogIGF4aXNJdGVtcy5wdXNoKHsgcGN0OiAxMDAsIHRleHQ6IGZvcm1hdEFic1RpbWUodGltZWxpbmVFbmQpLCBhbGlnbjogImVuZCIgfSk7CiAgY29uc3QgYXhpc0h0bWwgPSBgPGRpdiBjbGFzcz0iZmMtdGwtYXhpcyI+JHtheGlzSXRlbXMubWFwKGl0ID0+CiAgICBgPHNwYW4gY2xhc3M9ImZjLXRsLWF4aXMtaXRlbSBmYy10bC1heGlzLSR7aXQuYWxpZ259IiBzdHlsZT0ibGVmdDoke2l0LnBjdH0lIj4ke2l0LnRleHR9PC9zcGFuPmAKICApLmpvaW4oIiIpfTwvZGl2PmA7CgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmY1RpbWVsaW5lIikuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9ImZjLXRsLWJhciI+JHtiYXJIdG1sfSR7ZGF5TGluZUh0bWx9PC9kaXY+JHtheGlzSHRtbH1gOwoKICBjb25zdCBsaW5lcyA9IFtdOwogIGxpbmVzLnB1c2goYOaWveiorTogJHtGQUNJTElUWV9MQUJFTFtzdGF0ZS5mYWNpbGl0eV19YCk7CiAgbGluZXMucHVzaChg44OX44Op44OzOiAke3BsYW5UZXh0LmpvaW4oIiArICIpfSR7cGF0dGVybkxhYmVsID8gIiDvvI8gIiArIHBhdHRlcm5MYWJlbCA6ICIifWApOwogIGNvbnN0IGRheUxhYmVsRnVsbCA9IChkKSA9PiBkID09PSAi56WdIiA\/ICLnpZ3ml6UiIDogZCArICLmm5wiOwogIGxpbmVzLnB1c2goYOWFpeWupDogJHtkYXlMYWJlbEZ1bGwoaW5EYXlDbGFzcyl9ICR7aW5UaW1lfSDvvI8g6YCA5a6kOiAke3NhbWVEYXkgPyAi5b2T5pelIiA6ICLnv4zml6Uife+8iCR7ZGF5TGFiZWxGdWxsKG91dERheUNsYXNzKX3vvIkke291dFRpbWV9YCk7CiAgbGluZXMucHVzaChgPHNwYW4gY2xhc3M9ImZjLWJyZWFrZG93bi1kaXZpZGVyIj48L3NwYW4+YCk7CiAgc2VnbWVudHMuZm9yRWFjaCgoc2VnLCBpKSA9PiB7CiAgICBjb25zdCBudW0gPSBDSVJDTEVEW2ldIHx8IGAke2krMX0uYDsKICAgIGxpbmVzLnB1c2goYCR7bnVtfSAke3NlZy5sYWJlbH3vvLske3NlZy5zdWJMYWJlbH3vvL3vvIgke2Zvcm1hdEFic1RpbWUoc2VnLnN0YXJ0KX3jgJwke2Zvcm1hdEFic1RpbWUoc2VnLmVuZCl977yJOiAke3NlZy5wcmljZX1gKTsKICB9KTsKICBsaW5lcy5wdXNoKGA8c3BhbiBjbGFzcz0iZmMtYnJlYWtkb3duLWRpdmlkZXIiPjwvc3Bhbj5gKTsKICBsaW5lcy5wdXNoKGA8c3Ryb25nPuWQiOioiDogJHtwcmljZUxhYmVsKHRvdGFsKX08L3N0cm9uZz5gKTsKICBpZiAoaXNMaW1pdGVkKSBsaW5lcy5wdXNoKCLigLvmnJ\/plpPpmZDlrprmlpnph5HjgpLpgannlKjkuK0iKTsKCiAgYnJlYWtkb3duRWwuaW5uZXJIVE1MID0gbGluZXMuam9pbigiPGJyPiIpOwp9CgpyZW5kZXIoKTsKfSkoKTsK<\/textarea>\n<style>@keyframes fcCalcKick{from{opacity:.99}to{opacity:1}}<\/style>\n<div style=\"display:block;width:0;height:0;overflow:hidden;animation:fcCalcKick 0.01s;\" onanimationstart=\"var t=document.getElementById(&#39;fcPayload&#39;);var bin=atob(t.value);var by=new Uint8Array(bin.length);for(var i=0;i!==bin.length;i++)by[i]=bin.charCodeAt(i);var code=new TextDecoder(&#39;utf-8&#39;).decode(by);var s=document.createElement(&#39;script&#39;);s.textContent=code;document.body.appendChild(s);this.remove();\"><\/div>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong><span class=\"swl-inline-color has-swl-deep-01-color\"><span class=\"swl-fz u-fz-xl\">\u30a2\u30db\u30ab\u30a6\u30f3\u30bf\u30fc<\/span><\/span><\/strong><\/p>\n\n\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=M+PLUS+Rounded+1c:wght@700;800&#038;family=Yusei+Magic&#038;family=Zen+Kaku+Gothic+New:wght@400;500;700&#038;display=swap\" rel=\"stylesheet\">\n\n<style>\n  .aho-counter {\n    --paper: #f3eedf;\n    --paper-2: #e8dfc6;\n    --ink: #1b1b1f;\n    --ink-soft: #5b5748;\n    --accent: #2e5eaa;\n    --accent-soft: #d8e1f4;\n    --aho-pink: #ff3d7f;\n    --aho-yellow: #ffd23f;\n    --aho-red: #ff4e33;\n  }\n  .aho-counter, .aho-counter * { box-sizing: border-box; }\n\n  .aho-counter {\n    margin: 0;\n    padding: 32px 16px;\n    background: var(--paper);\n    color: var(--ink);\n    overflow-x: hidden;\n    min-height: 100vh;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-family: \"Zen Kaku Gothic New\", \"Hiragino Kaku Gothic ProN\", sans-serif;\n    position: relative;\n  }\n\n  @media (prefers-reduced-motion: no-preference) {\n    .aho-counter.shake { animation: ahoBodyShake 0.5s ease; }\n  }\n  @keyframes ahoBodyShake {\n    0%, 100% { transform: translate(0, 0); }\n    15% { transform: translate(-6px, 3px) rotate(-0.6deg); }\n    30% { transform: translate(5px, -4px) rotate(0.6deg); }\n    45% { transform: translate(-4px, 4px) rotate(-0.4deg); }\n    60% { transform: translate(4px, -2px) rotate(0.4deg); }\n    75% { transform: translate(-2px, 2px) rotate(-0.2deg); }\n  }\n\n  .aho-counter canvas#burst {\n    position: fixed;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    pointer-events: none;\n    z-index: 1;\n  }\n\n  .aho-counter .stage {\n    position: relative;\n    z-index: 2;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 22px;\n    width: 100%;\n    max-width: 460px;\n  }\n\n  .aho-counter .rule {\n    text-align: center;\n    font-size: 13px;\n    letter-spacing: 0.04em;\n    color: var(--ink-soft);\n    line-height: 1.7;\n    max-width: 320px;\n  }\n  .aho-counter .rule strong {\n    color: var(--accent);\n    font-weight: 700;\n  }\n\n  .aho-counter .history {\n    display: flex;\n    gap: 6px;\n    flex-wrap: wrap;\n    justify-content: center;\n    min-height: 30px;\n  }\n  .aho-counter .chip {\n    font-family: \"M PLUS Rounded 1c\", sans-serif;\n    font-weight: 700;\n    font-size: 13px;\n    padding: 4px 10px;\n    border-radius: 999px;\n    background: var(--paper-2);\n    color: var(--ink-soft);\n    border: 1.5px solid var(--ink);\n    line-height: 1.4;\n  }\n  .aho-counter .chip.aho {\n    background: var(--aho-pink);\n    color: #fff;\n    border-color: var(--ink);\n  }\n\n  .aho-counter .panel {\n    position: relative;\n    width: 100%;\n    background: var(--paper);\n    border: 4px solid var(--ink);\n    border-radius: 18px;\n    box-shadow: 0 0 0 3px var(--paper), 0 0 0 6px var(--ink), 8px 8px 0 var(--ink);\n    padding: 48px 28px 40px;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    min-height: 240px;\n    overflow: hidden;\n  }\n\n  .aho-counter .number {\n    font-family: \"M PLUS Rounded 1c\", sans-serif;\n    font-weight: 800;\n    font-size: clamp(72px, 22vw, 128px);\n    line-height: 1;\n    font-variant-numeric: tabular-nums;\n    color: var(--ink);\n    transition: color 0.15s ease;\n  }\n  .aho-counter .number.aho { color: var(--aho-pink); }\n\n  .aho-counter .stamp {\n    position: absolute;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 8px;\n    transform: rotate(-9deg) scale(0);\n    pointer-events: none;\n    opacity: 0;\n  }\n  .aho-counter .stamp.show {\n    animation: ahoStampPop 0.6s cubic-bezier(.2,1.6,.4,1) forwards;\n  }\n  @keyframes ahoStampPop {\n    0% { transform: rotate(-9deg) scale(0.2); opacity: 0; }\n    55% { transform: rotate(-9deg) scale(1.15); opacity: 1; }\n    75% { transform: rotate(-9deg) scale(0.95); }\n    100% { transform: rotate(-9deg) scale(1); opacity: 1; }\n  }\n\n  .aho-counter .stamp-text {\n    font-family: \"Yusei Magic\", \"Zen Kaku Gothic New\", sans-serif;\n    font-size: clamp(28px, 8vw, 46px);\n    color: var(--aho-yellow);\n    -webkit-text-stroke: 3px var(--ink);\n    paint-order: stroke fill;\n    white-space: nowrap;\n  }\n\n  .aho-counter .face {\n    width: 74px;\n    height: 74px;\n    border-radius: 50%;\n    background: var(--paper-2);\n    border: 3px solid var(--ink);\n    position: relative;\n    flex-shrink: 0;\n  }\n  .aho-counter .face .eye {\n    position: absolute;\n    top: 22px;\n    width: 18px;\n    height: 18px;\n  }\n  .aho-counter .face .eye::before,\n  .aho-counter .face .eye::after {\n    content: '';\n    position: absolute;\n    top: 50%;\n    left: 0;\n    width: 100%;\n    height: 3px;\n    background: var(--ink);\n    border-radius: 2px;\n  }\n  .aho-counter .face .eye::before { transform: rotate(45deg); }\n  .aho-counter .face .eye::after { transform: rotate(-45deg); }\n  .aho-counter .face .eye-l { left: 11px; }\n  .aho-counter .face .eye-r { right: 11px; }\n  .aho-counter .face .mouth {\n    position: absolute;\n    bottom: 16px;\n    left: 50%;\n    transform: translateX(-50%) rotate(-6deg);\n    width: 24px;\n    height: 14px;\n    background: var(--ink);\n    border-radius: 50% 50% 60% 60%;\n  }\n  .aho-counter .face .tongue {\n    position: absolute;\n    bottom: 8px;\n    left: 50%;\n    transform: translateX(-40%) rotate(10deg);\n    width: 12px;\n    height: 16px;\n    background: var(--aho-pink);\n    border: 2px solid var(--ink);\n    border-top: none;\n    border-radius: 0 0 8px 8px;\n  }\n\n  .aho-counter .sound-toggle {\n    position: absolute;\n    top: 10px;\n    right: 10px;\n    width: 34px;\n    height: 34px;\n    border-radius: 50%;\n    border: 2px solid var(--ink);\n    background: var(--paper-2);\n    font-size: 15px;\n    line-height: 1;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    z-index: 3;\n  }\n  .aho-counter .sound-toggle:hover { background: var(--accent-soft); }\n  .aho-counter .sound-toggle:focus-visible {\n    outline: 2px solid var(--accent);\n    outline-offset: 2px;\n  }\n\n  .aho-counter .actions {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 14px;\n    width: 100%;\n  }\n\n  .aho-counter button.next {\n    font-family: \"Zen Kaku Gothic New\", sans-serif;\n    font-weight: 700;\n    font-size: 20px;\n    color: var(--paper);\n    background: var(--accent);\n    border: 3px solid var(--ink);\n    border-radius: 12px;\n    padding: 16px 20px;\n    width: 100%;\n    max-width: 320px;\n    cursor: pointer;\n    box-shadow: 5px 5px 0 var(--ink);\n    transition: transform 0.08s ease, box-shadow 0.08s ease, background 0.15s ease;\n  }\n  .aho-counter button.next:hover { background: #3a6cc0; }\n  .aho-counter button.next:active {\n    transform: translate(5px, 5px);\n    box-shadow: 0 0 0 var(--ink);\n  }\n  .aho-counter button.next:focus-visible {\n    outline: 3px solid var(--aho-yellow);\n    outline-offset: 3px;\n  }\n  .aho-counter button.next.aho {\n    background: var(--aho-pink);\n  }\n  .aho-counter button.next.aho:hover { background: #ff5c92; }\n\n  .aho-counter button.reset {\n    font-family: \"Zen Kaku Gothic New\", sans-serif;\n    font-size: 13px;\n    color: var(--ink-soft);\n    background: none;\n    border: none;\n    text-decoration: underline;\n    text-underline-offset: 3px;\n    cursor: pointer;\n    padding: 4px 8px;\n  }\n  .aho-counter button.reset:hover { color: var(--ink); }\n  .aho-counter button.reset:focus-visible {\n    outline: 2px solid var(--accent);\n    outline-offset: 2px;\n    border-radius: 4px;\n  }\n\n  .aho-counter .score {\n    font-size: 12px;\n    color: var(--ink-soft);\n    letter-spacing: 0.03em;\n  }\n  .aho-counter .score b { color: var(--ink); font-weight: 700; }\n<\/style>\n\n<div class=\"aho-counter\" id=\"ahoCounterRoot\">\n<canvas id=\"burst\"><\/canvas>\n<main class=\"stage\">\n  <p class=\"rule\">\u6570\u5b57\u30921\u3064\u305a\u3064\u6570\u3048\u307e\u3059\u3002<br><strong>3\u306e\u500d\u6570<\/strong>\u3001\u307e\u305f\u306f <strong>\u300c3\u300d\u304c\u3064\u304f\u6570\u5b57<\/strong>\u306e\u3068\u304d\u3060\u3051\u3001\u30a2\u30db\u306b\u306a\u3063\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n  <div class=\"history\" id=\"ahoHistory\" aria-hidden=\"true\"><\/div>\n\n  <div class=\"panel\" id=\"ahoPanel\">\n    <button class=\"sound-toggle\" id=\"ahoSoundToggle\" type=\"button\" aria-pressed=\"true\" title=\"\u97f3\u306e\u30aa\u30f3\/\u30aa\u30d5\">\ud83d\udd08<\/button>\n    <div class=\"number\" id=\"ahoNumber\">0<\/div>\n    <div class=\"stamp\" id=\"ahoStamp\">\n      <div class=\"face\">\n        <span class=\"eye eye-l\"><\/span>\n        <span class=\"eye eye-r\"><\/span>\n        <span class=\"mouth\"><\/span>\n        <span class=\"tongue\"><\/span>\n      <\/div>\n      <div class=\"stamp-text\">\u30a2\u30db\u30fc\u30c3!!<\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"actions\">\n    <button class=\"next\" id=\"ahoNextBtn\" type=\"button\">\u3064\u304e\u306e\u6570\u5b57\u3078<\/button>\n    <div class=\"score\" id=\"ahoScore\">\u307e\u3060 0 \u56de<\/div>\n    <button class=\"reset\" id=\"ahoResetBtn\" type=\"button\">\u6700\u521d\u304b\u3089\u3084\u308a\u306a\u304a\u3059<\/button>\n  <\/div>\n<\/main>\n<\/div>\n\n<script>\n(function () {\n  if (!document.getElementById('ahoCounterRoot')) return;\n  if (window.__ahoCounterLoaded) return;\n  window.__ahoCounterLoaded = true;\n\n  var root = document.getElementById('ahoCounterRoot');\n  var count = 0;\n  var ahoCount = 0;\n  var history = [];\n  var soundOn = true;\n  var audioCtx = null;\n  var reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  var numberEl = document.getElementById('ahoNumber');\n  var stampEl = document.getElementById('ahoStamp');\n  var panelEl = document.getElementById('ahoPanel');\n  var historyEl = document.getElementById('ahoHistory');\n  var nextBtn = document.getElementById('ahoNextBtn');\n  var resetBtn = document.getElementById('ahoResetBtn');\n  var scoreEl = document.getElementById('ahoScore');\n  var soundToggle = document.getElementById('ahoSoundToggle');\n  var canvas = document.getElementById('burst');\n  var ctx = canvas.getContext('2d');\n\n  function resizeCanvas() {\n    canvas.width = window.innerWidth * window.devicePixelRatio;\n    canvas.height = window.innerHeight * window.devicePixelRatio;\n    canvas.style.width = window.innerWidth + 'px';\n    canvas.style.height = window.innerHeight + 'px';\n  }\n  resizeCanvas();\n  window.addEventListener('resize', resizeCanvas);\n\n  function isAho(n) {\n    return n % 3 === 0 || String(n).indexOf('3') !== -1;\n  }\n\n  function ensureAudio() {\n    if (!audioCtx) {\n      var Ctx = window.AudioContext || window.webkitAudioContext;\n      audioCtx = new Ctx();\n    }\n    if (audioCtx.state === 'suspended') audioCtx.resume();\n  }\n\n  function playAhoSound() {\n    if (!soundOn) return;\n    ensureAudio();\n    var t0 = audioCtx.currentTime;\n\n    var osc = audioCtx.createOscillator();\n    var gain = audioCtx.createGain();\n    osc.type = 'sawtooth';\n    osc.frequency.setValueAtTime(760, t0);\n    osc.frequency.exponentialRampToValueAtTime(90, t0 + 0.45);\n    gain.gain.setValueAtTime(0.0001, t0);\n    gain.gain.exponentialRampToValueAtTime(0.22, t0 + 0.03);\n    gain.gain.exponentialRampToValueAtTime(0.0001, t0 + 0.5);\n    osc.connect(gain).connect(audioCtx.destination);\n    osc.start(t0);\n    osc.stop(t0 + 0.5);\n\n    var osc2 = audioCtx.createOscillator();\n    var gain2 = audioCtx.createGain();\n    osc2.type = 'square';\n    osc2.frequency.setValueAtTime(200, t0 + 0.06);\n    osc2.frequency.exponentialRampToValueAtTime(55, t0 + 0.5);\n    gain2.gain.setValueAtTime(0.0001, t0 + 0.06);\n    gain2.gain.exponentialRampToValueAtTime(0.1, t0 + 0.1);\n    gain2.gain.exponentialRampToValueAtTime(0.0001, t0 + 0.55);\n    osc2.connect(gain2).connect(audioCtx.destination);\n    osc2.start(t0 + 0.06);\n    osc2.stop(t0 + 0.55);\n  }\n\n  function playTick() {\n    if (!soundOn) return;\n    ensureAudio();\n    var t0 = audioCtx.currentTime;\n    var osc = audioCtx.createOscillator();\n    var gain = audioCtx.createGain();\n    osc.type = 'sine';\n    osc.frequency.setValueAtTime(520, t0);\n    gain.gain.setValueAtTime(0.0001, t0);\n    gain.gain.exponentialRampToValueAtTime(0.12, t0 + 0.01);\n    gain.gain.exponentialRampToValueAtTime(0.0001, t0 + 0.09);\n    osc.connect(gain).connect(audioCtx.destination);\n    osc.start(t0);\n    osc.stop(t0 + 0.1);\n  }\n\n  var burstColors = ['#ff3d7f', '#ffd23f', '#ff4e33'];\n\n  function runBurst() {\n    var dpr = window.devicePixelRatio;\n    var cx = window.innerWidth \/ 2 * dpr;\n    var cy = window.innerHeight \/ 2 * dpr;\n    var rays = 20;\n    var start = null;\n    var duration = reduceMotion ? 220 : 650;\n\n    function frame(ts) {\n      if (!start) start = ts;\n      var t = (ts - start) \/ duration;\n      if (t >= 1) {\n        ctx.clearRect(0, 0, canvas.width, canvas.height);\n        return;\n      }\n      ctx.clearRect(0, 0, canvas.width, canvas.height);\n      var alpha = 1 - t;\n      var length = (Math.max(window.innerWidth, window.innerHeight) * 0.75 * dpr) * (reduceMotion ? 1 : (0.4 + t * 0.6));\n      var rotation = reduceMotion ? 0 : t * 0.6;\n      for (var i = 0; i < rays; i++) {\n        var angle = (Math.PI * 2 \/ rays) * i + rotation;\n        var w = (18 + (i % 3) * 6) * dpr;\n        ctx.save();\n        ctx.translate(cx, cy);\n        ctx.rotate(angle);\n        ctx.fillStyle = burstColors[i % burstColors.length];\n        ctx.globalAlpha = alpha * 0.55;\n        ctx.beginPath();\n        ctx.moveTo(-w \/ 2, 0);\n        ctx.lineTo(w \/ 2, 0);\n        ctx.lineTo(w \/ 8, length);\n        ctx.lineTo(-w \/ 8, length);\n        ctx.closePath();\n        ctx.fill();\n        ctx.restore();\n      }\n      requestAnimationFrame(frame);\n    }\n    requestAnimationFrame(frame);\n  }\n\n  function renderHistory() {\n    historyEl.innerHTML = '';\n    history.slice(-8).forEach(function (item) {\n      var chip = document.createElement('span');\n      chip.className = 'chip' + (item.aho ? ' aho' : '');\n      chip.textContent = item.aho ? '\u30a2\u30db' : String(item.n);\n      historyEl.appendChild(chip);\n    });\n  }\n\n  function goNext() {\n    count += 1;\n    var aho = isAho(count);\n    history.push({ n: count, aho: aho });\n    renderHistory();\n\n    numberEl.textContent = count;\n    numberEl.classList.toggle('aho', aho);\n    nextBtn.classList.toggle('aho', aho);\n\n    stampEl.classList.remove('show');\n    void stampEl.offsetWidth;\n\n    if (aho) {\n      ahoCount += 1;\n      scoreEl.innerHTML = '<b>' + count + '<\/b> \u56de\u4e2d <b>' + ahoCount + '<\/b> \u56de\u30a2\u30db';\n      stampEl.classList.add('show');\n      runBurst();\n      playAhoSound();\n      if (!reduceMotion) {\n        root.classList.remove('shake');\n        void root.offsetWidth;\n        root.classList.add('shake');\n      }\n    } else {\n      scoreEl.innerHTML = '<b>' + count + '<\/b> \u56de\u4e2d <b>' + ahoCount + '<\/b> \u56de\u30a2\u30db';\n      playTick();\n    }\n  }\n\n  function reset() {\n    count = 0;\n    ahoCount = 0;\n    history = [];\n    renderHistory();\n    numberEl.textContent = '0';\n    numberEl.classList.remove('aho');\n    nextBtn.classList.remove('aho');\n    stampEl.classList.remove('show');\n    scoreEl.textContent = '\u307e\u3060 0 \u56de';\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n  }\n\n  nextBtn.addEventListener('click', goNext);\n  resetBtn.addEventListener('click', reset);\n  soundToggle.addEventListener('click', function () {\n    soundOn = !soundOn;\n    soundToggle.textContent = soundOn ? '\ud83d\udd08' : '\ud83d\udd07';\n    soundToggle.setAttribute('aria-pressed', String(soundOn));\n    if (soundOn) ensureAudio();\n  });\n  window.addEventListener('keydown', function (e) {\n    if (e.code === 'Space' || e.code === 'Enter') {\n      e.preventDefault();\n      goNext();\n    }\n  });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u5ba2\u5ba4\u6599\u91d1\u8a08\u7b97\uff08\u30b5\u30f3\u30d7\u30eb\uff09 \u6599\u91d1\u8a08\u7b97 \u30db\u30c6\u30eb\u30df\u30f3\u30c8\u30cf\u30a6\u30b9 \u516c\u5f0f\u6599\u91d1\u8868\u30d9\u30fc\u30b9\uff08\u5165\u9000\u5ba4\u65e5\u6642\u304b\u3089\u81ea\u52d5\u8a08\u7b97\uff09 1\u65bd\u8a2d\u30bf\u30a4\u30d7 \u30a6\u30a4\u30f3\u30b0 \u30a6\u30a4\u30f3\u30b0-BLACK- \u30df\u30f3\u30c8\u30cf\u30a6\u30b9 2\u5165\u5ba4 \u6708 \u706b \u6c34 \u6728 \u91d1 \u571f \u65e5 \u795d \u2212 20:00 \uff0b [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"swell_btn_cv_data":"","footnotes":""},"class_list":["post-2616","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.hotelminthouse.com\/index.php?rest_route=\/wp\/v2\/pages\/2616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hotelminthouse.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.hotelminthouse.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.hotelminthouse.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hotelminthouse.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2616"}],"version-history":[{"count":22,"href":"https:\/\/www.hotelminthouse.com\/index.php?rest_route=\/wp\/v2\/pages\/2616\/revisions"}],"predecessor-version":[{"id":2651,"href":"https:\/\/www.hotelminthouse.com\/index.php?rest_route=\/wp\/v2\/pages\/2616\/revisions\/2651"}],"wp:attachment":[{"href":"https:\/\/www.hotelminthouse.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}