{"id":38962,"date":"2026-04-20T15:23:42","date_gmt":"2026-04-20T13:23:42","guid":{"rendered":"https:\/\/www.recharge.com\/blog\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps"},"modified":"2026-04-21T10:28:33","modified_gmt":"2026-04-21T08:28:33","slug":"conversor-de-sensibilidade-do-mouse-para-23-jogos-fps","status":"publish","type":"post","link":"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps","title":{"rendered":"Conversor de Sensibilidade do Mouse para 23 Jogos FPS"},"content":{"rendered":"\n\n<!--\n  RECHARGE \u2014 Conversor de Sensibilidade do Mouse (Incorpora\u00e7\u00e3o para WordPress)\n  Insira isto em um bloco HTML Personalizado no WordPress.\n  Todo o CSS est\u00e1 delimitado sob .rc-widget para evitar conflitos de tema.\n-->\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800&#038;display=swap\">\n<style>\n.rc-widget {\n  --bg: #F5F7F8;\n  --bg-deep: #EDF0F2;\n  --bg-card: rgba(255, 255, 255, 0.7);\n  --bg-card-solid: #FFFFFF;\n  --bg-input: #F0F3F5;\n  --bg-input-hover: #E6EBED;\n\n  --accent: #059669;\n  --accent-hover: #047857;\n  --accent-glow: rgba(5, 150, 105, 0.12);\n  --accent-soft: rgba(5, 150, 105, 0.06);\n\n  --text: #111827;\n  --text-secondary: #4B5563;\n  --text-muted: #9CA3AF;\n  --text-label: #6B7280;\n  --text-dark: #FFFFFF;\n\n  --border: #E5E7EB;\n  --border-focus: #059669;\n  --border-error: #EF4444;\n\n  --gold: #D97706;\n  --danger: #EF4444;\n\n  --radius: 12px;\n  --radius-lg: 16px;\n  --radius-xl: 20px;\n  --radius-full: 9999px;\n\n  --shadow: 0 1px 3px rgba(0,0,0,0.06), 0 4px 16px rgba(0,0,0,0.04);\n  --shadow-lg: 0 4px 24px rgba(0,0,0,0.08), 0 8px 32px rgba(0,0,0,0.04);\n\n  --font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n\n  font-family: var(--font);\n  color: var(--text);\n  line-height: 1.6;\n  -webkit-font-smoothing: antialiased;\n  max-width: 780px;\n  margin: 0 auto;\n  padding: 8px 0;\n}\n\n.rc-widget *, .rc-widget *::before, .rc-widget *::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n\n\/* \u2500\u2500 Dynamic H2 Heading \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-converter-heading {\n  font-size: 1.5rem;\n  font-weight: 700;\n  color: var(--text);\n  text-align: center;\n  margin-bottom: 20px;\n  letter-spacing: -0.5px;\n  line-height: 1.3;\n  min-height: 2em;\n  transition: opacity 0.3s ease;\n}\n.rc-widget .rc-converter-heading .rc-h2-accent { color: var(--accent); }\n.rc-widget .rc-converter-heading.empty { opacity: 0; min-height: 0; margin-bottom: 0; }\n\n\/* \u2500\u2500 Game Note Banner \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-game-note {\n  background: rgba(217,119,6,0.06);\n  border: 1px solid rgba(217,119,6,0.2);\n  border-radius: var(--radius);\n  padding: 10px 16px;\n  margin-top: 12px;\n  font-size: 13px;\n  color: var(--gold);\n  display: none;\n  align-items: flex-start;\n  gap: 8px;\n  line-height: 1.5;\n}\n.rc-widget .rc-game-note.visible { display: flex; }\n.rc-widget .rc-game-note-icon { flex-shrink: 0; margin-top: 1px; }\n\n\/* \u2500\u2500 Card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-card {\n  background: var(--bg-card-solid);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-xl);\n  padding: 36px 32px 28px;\n  margin-bottom: 20px;\n  position: relative;\n  box-shadow: var(--shadow);\n  animation: rcFadeIn 0.4s ease forwards;\n}\n.rc-widget .rc-card:nth-child(3) { animation-delay: 0.1s; }\n\n.rc-widget .rc-card-title {\n  font-size: 0.8rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 1px;\n  color: var(--text-muted);\n  margin-bottom: 24px;\n}\n\n\/* \u2500\u2500 Grid Layouts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; position: relative; }\n.rc-widget .rc-grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; }\n.rc-widget .rc-grid-full { grid-column: 1 \/ -1; }\n\n\/* \u2500\u2500 Floating Label Input \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-field { position: relative; width: 100%; }\n\n.rc-widget .rc-field input,\n.rc-widget .rc-field select {\n  width: 100%;\n  height: 60px;\n  padding: 26px 16px 8px;\n  font-size: 16px;\n  font-weight: 500;\n  font-family: var(--font);\n  color: var(--text);\n  background: var(--bg-input);\n  border: 1.5px solid var(--border);\n  border-radius: var(--radius);\n  outline: none;\n  transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n.rc-widget .rc-field input::placeholder { color: transparent; }\n.rc-widget .rc-field input:hover,\n.rc-widget .rc-field select:hover { background: var(--bg-input-hover); }\n\n.rc-widget .rc-field input:focus,\n.rc-widget .rc-field select:focus {\n  border-color: var(--border-focus);\n  box-shadow: 0 0 0 4px var(--accent-glow);\n}\n\n.rc-widget .rc-field label {\n  position: absolute;\n  top: 50%;\n  left: 16px;\n  transform: translateY(-50%);\n  font-size: 15px;\n  font-weight: 500;\n  color: var(--text-label);\n  pointer-events: none;\n  transition: all 0.2s ease;\n  z-index: 2;\n  line-height: 1;\n}\n\n.rc-widget .rc-field input:focus + label,\n.rc-widget .rc-field input:not(:placeholder-shown) + label,\n.rc-widget .rc-field select:focus + label,\n.rc-widget .rc-field.has-value label {\n  top: 14px;\n  transform: translateY(0);\n  font-size: 12px;\n  font-weight: 600;\n  color: var(--accent);\n}\n\n.rc-widget .rc-field select {\n  cursor: pointer;\n  padding-right: 44px;\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\");\n  background-repeat: no-repeat;\n  background-position: right 14px center;\n  background-size: 18px;\n}\n.rc-widget .rc-field select:focus {\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23059669' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\");\n}\n.rc-widget .rc-field select option { background: var(--bg-card-solid); color: var(--text); padding: 12px; }\n\n\/* \u2500\u2500 Searchable Game Dropdown \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-game-select-wrap { position: relative; width: 100%; overflow: visible !important; }\n.rc-widget .rc-card { overflow: visible !important; }\n.rc-widget .rc-grid-2 { overflow: visible !important; }\n\n.rc-widget .rc-game-input {\n  width: 100%;\n  height: 60px;\n  padding: 26px 44px 8px 16px;\n  font-size: 16px;\n  font-weight: 500;\n  font-family: var(--font);\n  color: var(--text);\n  background: var(--bg-input);\n  border: 1.5px solid var(--border);\n  border-radius: var(--radius);\n  outline: none;\n  transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;\n  cursor: pointer;\n}\n\n.rc-widget .rc-game-input:hover { background: var(--bg-input-hover); }\n.rc-widget .rc-game-input:focus {\n  border-color: var(--border-focus);\n  box-shadow: 0 0 0 4px var(--accent-glow);\n  cursor: text;\n}\n\n.rc-widget .rc-game-label {\n  position: absolute;\n  top: 50%; left: 16px;\n  transform: translateY(-50%);\n  font-size: 15px; font-weight: 500;\n  color: var(--text-label);\n  pointer-events: none;\n  transition: all 0.2s ease;\n  z-index: 2; line-height: 1;\n}\n\n.rc-widget .rc-game-select-wrap.focused .rc-game-label,\n.rc-widget .rc-game-select-wrap.has-value .rc-game-label {\n  top: 14px; transform: translateY(0);\n  font-size: 12px; font-weight: 600; color: var(--accent);\n}\n\n.rc-widget .rc-game-arrow {\n  position: absolute; right: 14px; top: 50%; transform: translateY(-50%);\n  width: 18px; height: 18px; pointer-events: none;\n  transition: transform 0.2s; color: var(--text-muted);\n}\n.rc-widget .rc-game-select-wrap.open .rc-game-arrow { transform: translateY(-50%) rotate(180deg); color: var(--accent); }\n\n.rc-widget .rc-dropdown {\n  position: absolute;\n  top: calc(100% + 6px); left: 0; right: 0;\n  background: var(--bg-card-solid);\n  border: 1px solid var(--border);\n  border-radius: var(--radius);\n  box-shadow: var(--shadow-lg);\n  z-index: 999999;\n  max-height: 260px;\n  overflow-y: auto;\n  display: none;\n  scrollbar-width: thin;\n  scrollbar-color: #D1D5DB transparent;\n}\n.rc-widget .rc-dropdown.open { display: block !important; }\n\n.rc-widget .rc-dropdown-item {\n  padding: 12px 16px; font-size: 14px; font-weight: 500;\n  color: var(--text-secondary); cursor: pointer;\n  transition: all 0.15s;\n  border-bottom: 1px solid rgba(0,0,0,0.04);\n}\n.rc-widget .rc-dropdown-item:last-child { border-bottom: none; }\n.rc-widget .rc-dropdown-item:hover,\n.rc-widget .rc-dropdown-item.highlighted { background: var(--accent); color: var(--text-dark); }\n\n.rc-widget .rc-dropdown-empty { padding: 16px; text-align: center; color: var(--text-muted); font-size: 14px; }\n\n.rc-widget .rc-dropdown::-webkit-scrollbar { width: 6px; }\n.rc-widget .rc-dropdown::-webkit-scrollbar-track { background: transparent; }\n.rc-widget .rc-dropdown::-webkit-scrollbar-thumb { background: #D1D5DB; border-radius: 3px; }\n\n\/* \u2500\u2500 Swap Button \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-swap-wrap { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 10; }\n\n.rc-widget .rc-swap-btn {\n  width: 40px; height: 40px;\n  background: var(--bg-card-solid);\n  border: 1.5px solid var(--border);\n  border-radius: 50%; cursor: pointer;\n  display: flex; align-items: center; justify-content: center;\n  color: var(--text-muted); transition: all 0.2s; padding: 0;\n}\n.rc-widget .rc-swap-btn:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); transform: scale(1.08); }\n.rc-widget .rc-swap-btn:active { transform: scale(0.95); }\n.rc-widget .rc-swap-btn svg { width: 18px; height: 18px; }\n\n\/* \u2500\u2500 Result Display \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-result-section { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--border); }\n\n.rc-widget .rc-result-main { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; }\n.rc-widget .rc-result-left { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }\n.rc-widget .rc-result-label { font-size: 1.1rem; font-weight: 600; color: var(--text); }\n\n.rc-widget .rc-result-pill {\n  display: inline-flex; align-items: center; gap: 10px;\n  background: rgba(5,150,105,0.08);\n  border: 1px solid rgba(5,150,105,0.2);\n  padding: 6px 10px 6px 20px;\n  border-radius: var(--radius-full);\n  font-size: 1.25rem; font-weight: 700; color: var(--accent);\n  min-width: 120px; transition: all 0.3s;\n}\n.rc-widget .rc-result-pill.waiting { color: var(--text-muted); background: rgba(0,0,0,0.03); border-color: var(--border); }\n\n.rc-widget .rc-copy-btn {\n  width: 34px; height: 34px; background: transparent; border: none;\n  cursor: pointer; color: var(--accent);\n  display: flex; align-items: center; justify-content: center;\n  border-radius: 50%; transition: all 0.2s; padding: 0; flex-shrink: 0;\n}\n.rc-widget .rc-copy-btn:hover { background: rgba(5,150,105,0.1); }\n.rc-widget .rc-copy-btn:active { transform: scale(0.9); }\n.rc-widget .rc-copy-btn.copied { background: var(--accent); color: var(--text-dark); }\n.rc-widget .rc-copy-btn svg { width: 16px; height: 16px; }\n\n\/* \u2500\u2500 Buttons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-btn-group { display: flex; gap: 8px; flex-wrap: wrap; }\n\n.rc-widget .rc-btn {\n  padding: 8px 20px; border-radius: var(--radius-full);\n  border: 1.5px solid var(--border); background: transparent;\n  color: var(--text-secondary); font-size: 14px; font-weight: 600;\n  font-family: var(--font); cursor: pointer;\n  display: inline-flex; align-items: center; gap: 6px;\n  transition: all 0.2s; white-space: nowrap;\n}\n.rc-widget .rc-btn:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); transform: translateY(-1px); }\n.rc-widget .rc-btn:active { transform: scale(0.97); }\n.rc-widget .rc-btn svg { width: 14px; height: 14px; }\n.rc-widget .rc-btn.active { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }\n.rc-widget .rc-btn.active .rc-toggle-arrow { transform: rotate(180deg); }\n.rc-widget .rc-toggle-arrow { transition: transform 0.2s; }\n\n\/* \u2500\u2500 Advanced Results \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-advanced { display: none; margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--border); }\n.rc-widget .rc-advanced.visible { display: block; }\n.rc-widget .rc-adv-grid { display: flex; flex-wrap: wrap; gap: 12px; }\n.rc-widget .rc-adv-item { display: flex; align-items: center; gap: 8px; }\n.rc-widget .rc-adv-label { font-size: 14px; font-weight: 500; color: var(--text-muted); }\n.rc-widget .rc-adv-pill {\n  padding: 5px 16px; border-radius: var(--radius-full);\n  background: rgba(0,0,0,0.03); border: 1px solid var(--border);\n  font-size: 14px; font-weight: 600; color: var(--text);\n  display: flex; align-items: center; gap: 6px;\n}\n\n\/* \u2500\u2500 eDPI Calculator \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-edpi-output {\n  background: rgba(5,150,105,0.05);\n  border: 1px solid rgba(5,150,105,0.15);\n  border-radius: var(--radius-lg);\n  padding: 24px; text-align: center;\n  display: flex; flex-direction: column; justify-content: center;\n  min-height: 132px;\n}\n.rc-widget .rc-edpi-label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: var(--text-muted); margin-bottom: 8px; }\n.rc-widget .rc-edpi-value-wrap { display: flex; align-items: center; justify-content: center; gap: 10px; }\n.rc-widget .rc-edpi-value { font-size: 2rem; font-weight: 800; color: var(--accent); line-height: 1; transition: all 0.3s; }\n.rc-widget .rc-edpi-value.waiting { color: var(--text-muted); }\n\n\/* \u2500\u2500 Pro Presets \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-presets-section { margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--border); }\n.rc-widget .rc-presets-title { font-size: 13px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 12px; }\n.rc-widget .rc-presets-grid { display: flex; flex-wrap: wrap; gap: 8px; }\n\n.rc-widget .rc-preset-chip {\n  padding: 6px 14px; border-radius: var(--radius-full);\n  border: 1.5px solid var(--border); background: transparent;\n  color: var(--text-secondary); font-size: 13px; font-weight: 600;\n  font-family: var(--font); cursor: pointer; transition: all 0.2s;\n  display: flex; align-items: center; gap: 6px;\n}\n.rc-widget .rc-preset-chip:hover { border-color: var(--gold); color: var(--gold); background: rgba(217,119,6,0.06); }\n.rc-widget .rc-preset-chip .preset-game { font-weight: 500; color: var(--text-muted); font-size: 11px; }\n\n\/* \u2500\u2500 Toast \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-toast {\n  position: fixed; top: 20px; right: 20px;\n  background: var(--accent); color: var(--text-dark);\n  padding: 12px 20px; border-radius: var(--radius);\n  font-size: 14px; font-weight: 600;\n  box-shadow: 0 4px 16px rgba(5,150,105,0.3);\n  z-index: 10000; opacity: 0; transform: translateY(-10px);\n  transition: all 0.3s ease; pointer-events: none;\n}\n.rc-widget .rc-toast.visible { opacity: 1; transform: translateY(0); }\n\n\/* \u2500\u2500 Error States \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-field.error input,\n.rc-widget .rc-game-select-wrap.error .rc-game-input {\n  border-color: var(--danger) !important;\n  box-shadow: 0 0 0 3px rgba(239,68,68,0.1) !important;\n}\n\n\/* \u2500\u2500 Footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-footer { text-align: center; padding: 24px 0; color: var(--text-muted); font-size: 0.8rem; }\n.rc-widget .rc-footer a { color: var(--accent); text-decoration: none; }\n.rc-widget .rc-footer a:hover { text-decoration: underline; }\n\n\/* \u2500\u2500 Screen Reader \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .sr-only {\n  position: absolute; width: 1px; height: 1px;\n  padding: 0; margin: -1px; overflow: hidden;\n  clip: rect(0,0,0,0); white-space: nowrap; border: 0;\n}\n\n\/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n@media (max-width: 640px) {\n  .rc-widget .rc-converter-heading { font-size: 1.15rem; }\n  .rc-widget .rc-card { padding: 24px 18px 20px; }\n  .rc-widget .rc-grid-2 { grid-template-columns: 1fr; }\n  .rc-widget .rc-grid-3 { grid-template-columns: 1fr; }\n  .rc-widget .rc-swap-wrap { position: relative; top: auto; left: auto; transform: none; display: flex; justify-content: center; margin: -4px 0; z-index: 10; }\n  .rc-widget .rc-swap-btn svg { transform: rotate(90deg); }\n  .rc-widget .rc-result-main { flex-direction: column; align-items: flex-start; }\n  .rc-widget .rc-result-left { width: 100%; }\n  .rc-widget .rc-adv-grid { flex-direction: column; }\n  .rc-widget .rc-presets-grid { gap: 6px; }\n  .rc-widget .rc-edpi-row { grid-template-columns: 1fr !important; }\n  .rc-widget .rc-edpi-output { min-height: auto; padding: 20px; }\n}\n\n\/* \u2500\u2500 Animations \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n@keyframes rcFadeIn {\n  from { opacity: 0; transform: translateY(8px); }\n  to { opacity: 1; transform: translateY(0); }\n}\n@keyframes rcPulse {\n  0%, 100% { opacity: 1; }\n  50% { opacity: 0.6; }\n}\n.rc-widget .rc-result-pill.calculating { animation: rcPulse 0.5s ease; }\n<\/style>\n<div class=\"rc-widget\" id=\"rcWidget\">\n\n  <!-- Dynamic H2: updates to \"[Game] to [Game] Sensitivity Converter\" -->\n  <h2 class=\"rc-converter-heading empty\" id=\"converterHeading\"><\/h2>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 CONVERTER CARD \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"rc-card\" id=\"converterCard\">\n    <div class=\"rc-card-title\">Conversor de Sensibilidade<\/div>\n\n    <!-- Game selects -->\n    <div class=\"rc-grid-2\" style=\"margin-bottom: 16px;\">\n      <div class=\"rc-game-select-wrap\" id=\"fromGameWrap\">\n        <input class=\"rc-game-input\" type=\"text\" id=\"fromGameInput\" placeholder=\" \" autocomplete=\"off\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-label=\"Jogo de origem\">\n        <label class=\"rc-game-label\">Do Jogo<\/label>\n        <svg class=\"rc-game-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\n        <div class=\"rc-dropdown\" id=\"fromDropdown\" role=\"listbox\"><\/div>\n        <input type=\"hidden\" id=\"fromGameValue\">\n      <\/div>\n\n      <div class=\"rc-swap-wrap\">\n        <button class=\"rc-swap-btn\" id=\"swapBtn\" aria-label=\"Trocar jogos\" title=\"Trocar jogos\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 16l-4-4 4-4\"\/><path d=\"M17 8l4 4-4 4\"\/><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"\/><\/svg>\n        <\/button>\n      <\/div>\n\n      <div class=\"rc-game-select-wrap\" id=\"toGameWrap\">\n        <input class=\"rc-game-input\" type=\"text\" id=\"toGameInput\" placeholder=\" \" autocomplete=\"off\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-label=\"Jogo de destino\">\n        <label class=\"rc-game-label\">Para o Jogo<\/label>\n        <svg class=\"rc-game-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\n        <div class=\"rc-dropdown\" id=\"toDropdown\" role=\"listbox\"><\/div>\n        <input type=\"hidden\" id=\"toGameValue\">\n      <\/div>\n    <\/div>\n\n    <!-- Sensitivity + DPI -->\n    <div class=\"rc-grid-3\">\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"fromSens\" placeholder=\" \" step=\"any\" min=\"0\" inputmode=\"decimal\" aria-label=\"Sensibilidade atual\">\n        <label for=\"fromSens\">Sensibilidade<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"fromDPI\" placeholder=\" \" value=\"800\" min=\"1\" inputmode=\"numeric\" aria-label=\"DPI atual\">\n        <label for=\"fromDPI\">DPI de Origem<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"toDPI\" placeholder=\" \" value=\"800\" min=\"1\" inputmode=\"numeric\" aria-label=\"DPI de destino\">\n        <label for=\"toDPI\">DPI de Destino<\/label>\n      <\/div>\n    <\/div>\n\n    <!-- Game notes -->\n    <div class=\"rc-game-note\" id=\"gameNote\">\n      <span class=\"rc-game-note-icon\">&#9888;&#65039;<\/span>\n      <span id=\"gameNoteText\"><\/span>\n    <\/div>\n\n    <!-- Result -->\n    <div class=\"rc-result-section\">\n      <div class=\"rc-result-main\">\n        <div class=\"rc-result-left\">\n          <span class=\"rc-result-label\">Nova Sensibilidade<\/span>\n          <span class=\"rc-result-pill waiting\" id=\"resultPill\">\n            <span id=\"resultValue\">0.00<\/span>\n            <button class=\"rc-copy-btn\" id=\"copyResultBtn\" aria-label=\"Copiar resultado\" title=\"Copiar para a \u00e1rea de transfer\u00eancia\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg>\n            <\/button>\n          <\/span>\n        <\/div>\n        <div class=\"rc-btn-group\">\n          <button class=\"rc-btn\" id=\"advancedToggle\" aria-expanded=\"false\">\n            Avan\u00e7ado\n            <svg class=\"rc-toggle-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\n          <\/button>\n          <button class=\"rc-btn\" id=\"resetBtn\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 12a9 9 0 019-9 9.75 9.75 0 016.74 2.74L21 8\"\/><path d=\"M21 3v5h-5\"\/><path d=\"M21 12a9 9 0 01-9 9 9.75 9.75 0 01-6.74-2.74L3 16\"\/><path d=\"M3 21v-5h5\"\/><\/svg>\n            Redefinir\n          <\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"rc-advanced\" id=\"advancedSection\">\n        <div class=\"rc-adv-grid\">\n          <div class=\"rc-adv-item\">\n            <span class=\"rc-adv-label\">eDPI<\/span>\n            <span class=\"rc-adv-pill\" id=\"advEDPI\">0.00<\/span>\n          <\/div>\n          <div class=\"rc-adv-item\">\n            <span class=\"rc-adv-label\">cm\/360&deg;<\/span>\n            <span class=\"rc-adv-pill\" id=\"advCm\">0.00<\/span>\n          <\/div>\n          <div class=\"rc-adv-item\">\n            <span class=\"rc-adv-label\">in\/360&deg;<\/span>\n            <span class=\"rc-adv-pill\" id=\"advInch\">0.00<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Pro Presets -->\n    <div class=\"rc-presets-section\">\n      <div class=\"rc-presets-title\">Aplica\u00e7\u00e3o R\u00e1pida: Configura\u00e7\u00f5es Profissionais<\/div>\n      <div class=\"rc-presets-grid\" id=\"presetsGrid\"><\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 eDPI CALCULATOR CARD \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"rc-card\">\n    <div class=\"rc-card-title\">Calculadora de eDPI<\/div>\n    <div class=\"rc-edpi-row\" style=\"display: grid; grid-template-columns: 1fr 1fr 200px; gap: 16px; align-items: start;\">\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"edpiSens\" placeholder=\" \" step=\"any\" min=\"0\" inputmode=\"decimal\" aria-label=\"Sensibilidade do jogo\">\n        <label for=\"edpiSens\">Sensibilidade<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"edpiDPI\" placeholder=\" \" min=\"1\" inputmode=\"numeric\" aria-label=\"DPI do Mouse\">\n        <label for=\"edpiDPI\">DPI do Mouse<\/label>\n      <\/div>\n      <div class=\"rc-edpi-output\">\n        <div class=\"rc-edpi-label\">Seu eDPI<\/div>\n        <div class=\"rc-edpi-value-wrap\">\n          <span class=\"rc-edpi-value waiting\" id=\"edpiResult\">0.0<\/span>\n          <button class=\"rc-copy-btn\" id=\"copyEdpiBtn\" aria-label=\"Copiar eDPI\" title=\"Copiar eDPI\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg>\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Footer -->\n  <div class=\"rc-footer\">\n    <p>F\u00f3rmulas de convers\u00e3o baseadas em valores de guinada de jogo verificados (2024&ndash;2025). Os resultados podem variar para jogos com curvas de sensibilidade n\u00e3o lineares.<\/p>\n  <\/div>\n\n  <!-- Toast -->\n  <div class=\"rc-toast\" id=\"toast\">Copiado para a \u00e1rea de transfer\u00eancia!<\/div>\n\n  <!-- Screen reader -->\n  <div class=\"sr-only\" aria-live=\"polite\" id=\"srAnnounce\"><\/div>\n<\/div>\n<script>\n(function(){var c=atob(\"ICAndXNlIHN0cmljdCc7CgogIC8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgIEdBTUUgREFUQUJBU0UKICAgICDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KICB2YXIgR0FNRVMgPSBbCiAgICB7IGlkOiAiY3MyIiwgICAgICAgICAgIG5hbWU6ICJDb3VudGVyLVN0cmlrZSAyIiwgICAgICAgIHlhdzogMC4wMjIsICAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImNzZ28iLCAgICAgICAgICBuYW1lOiAiQ1M6R08iLCAgICAgICAgICAgICAgICAgICB5YXc6IDAuMDIyLCAgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJ2YWxvcmFudCIsICAgICAgbmFtZTogIlZhbG9yYW50IiwgICAgICAgICAgICAgICAgeWF3OiAwLjA3LCAgICAgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAib3ZlcndhdGNoMiIsICAgIG5hbWU6ICJPdmVyd2F0Y2ggMiIsICAgICAgICAgICAgIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImFwZXgiLCAgICAgICAgICBuYW1lOiAiQXBleCBMZWdlbmRzIiwgICAgICAgICAgICB5YXc6IDAuMDIyLCAgICAgIGNhdDogIkJSIiB9LAogICAgeyBpZDogImZvcnRuaXRlIiwgICAgICBuYW1lOiAiRm9ydG5pdGUiLCAgICAgICAgICAgICAgICB5YXc6IDAuMDA1NTU1LCAgIGNhdDogIkJSIiwgICAgICAgbm90ZTogIkVudGVyIHRoZSBwZXJjZW50YWdlIHZhbHVlIGZyb20gaW4tZ2FtZSAoZS5nLiA3IGZvciA3JSkuIEZPVi1kZXBlbmRlbnQgYXQgZGVmYXVsdCA4MC4iIH0sCiAgICB7IGlkOiAiY29kLW13MyIsICAgICAgIG5hbWU6ICJDb0Q6IE1vZGVybiBXYXJmYXJlIElJSSIsIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImNvZC13YXJ6b25lIiwgICBuYW1lOiAiQ29EOiBXYXJ6b25lIiwgICAgICAgICAgICB5YXc6IDAuMDA2NiwgICAgIGNhdDogIkJSIiB9LAogICAgeyBpZDogImNvZC1ibzYiLCAgICAgICBuYW1lOiAiQ29EOiBCbGFjayBPcHMgNiIsICAgICAgICB5YXc6IDAuMDA2NiwgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJyNi1zaWVnZSIsICAgICAgbmFtZTogIlJhaW5ib3cgU2l4IFNpZWdlIiwgICAgICAgeWF3OiAwLjAwNTczMCwgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAiYmYyMDQyIiwgICAgICAgIG5hbWU6ICJCYXR0bGVmaWVsZCAyMDQyIiwgICAgICAgIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogInRmMiIsICAgICAgICAgICBuYW1lOiAiVGVhbSBGb3J0cmVzcyAyIiwgICAgICAgICB5YXc6IDAuMDIyLCAgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJxdWFrZSIsICAgICAgICAgbmFtZTogIlF1YWtlIENoYW1waW9ucyIsICAgICAgICAgeWF3OiAwLjAyMiwgICAgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAiZGVhZGxvY2siLCAgICAgIG5hbWU6ICJEZWFkbG9jayIsICAgICAgICAgICAgICAgIHlhdzogMC4wNDQsICAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogIm1hcnZlbC1yaXZhbHMiLCAgbmFtZTogIk1hcnZlbCBSaXZhbHMiLCAgICAgICAgICAgeWF3OiAwLjAwNjYsICAgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAidGhlLWZpbmFscyIsICAgIG5hbWU6ICJUaGUgRmluYWxzIiwgICAgICAgICAgICAgIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImRlc3RpbnkyIiwgICAgICBuYW1lOiAiRGVzdGlueSAyIiwgICAgICAgICAgICAgICB5YXc6IDAuMDA2NiwgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJoYWxvLWluZmluaXRlIiwgIG5hbWU6ICJIYWxvIEluZmluaXRlIiwgICAgICAgICAgIHlhdzogMC4wMjIsICAgICAgY2F0OiAiRlBTIiwgICAgICBub3RlOiAiWWF3IG5lZWRzIGNvbW11bml0eSB2ZXJpZmljYXRpb24uIiB9LAogICAgeyBpZDogInB1YmciLCAgICAgICAgICBuYW1lOiAiUFVCRyIsICAgICAgICAgICAgICAgICAgICB5YXc6IDAuMDAyMjIyLCAgIGNhdDogIkJSIiwgICAgICAgbm90ZTogIkhpcGZpcmUgeWF3IG9ubHkuIFBlci1zY29wZSBzZW5zaXRpdml0aWVzIHZhcnkuIiB9LAogICAgeyBpZDogInJ1c3QiLCAgICAgICAgICBuYW1lOiAiUnVzdCIsICAgICAgICAgICAgICAgICAgICB5YXc6IDAuMDAyMjIsICAgIGNhdDogIlN1cnZpdmFsIiwgIG5vdGU6ICJZYXcgdW52ZXJpZmllZCAtIHJlc3VsdHMgbWF5IGJlIGFwcHJveGltYXRlLiIgfSwKICAgIHsgaWQ6ICJ0YXJrb3YiLCAgICAgICAgbmFtZTogIkVzY2FwZSBmcm9tIFRhcmtvdiIsICAgICAgeWF3OiAwLjEyNSwgICAgICBjYXQ6ICJGUFMiLCAgICAgIG5vdGU6ICJDb21wbGV4IHN5c3RlbSB3aXRoIHBlci1vcHRpYyBtdWx0aXBsaWVycy4gUmVzdWx0cyBhcHByb3hpbWF0ZS4iIH0sCiAgICB7IGlkOiAiZnJhZ3B1bmsiLCAgICAgIG5hbWU6ICJGcmFnUHVuayIsICAgICAgICAgICAgICAgIHlhdzogMC4wNTU2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogInNwbGl0Z2F0ZTIiLCAgICBuYW1lOiAiU3BsaXRnYXRlIDIiLCAgICAgICAgICAgICB5YXc6IDAuMDExMTYsICAgIGNhdDogIkZQUyIgfQogIF07CgogIHZhciBHQU1FX01BUCA9IHt9OwogIEdBTUVTLmZvckVhY2goZnVuY3Rpb24oZykgeyBHQU1FX01BUFtnLmlkXSA9IGc7IH0pOwoKICB2YXIgUFJPX1BSRVNFVFMgPSBbCiAgICB7IGxhYmVsOiAiZG9uayIsICAgICAgICBnYW1lOiAiY3MyIiwgICAgICAgIHNlbnM6IDEuMjUsICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogInMxbXBsZSIsICAgICAgZ2FtZTogImNzMiIsICAgICAgICBzZW5zOiAzLjA5LCAgZHBpOiA0MDAgfSwKICAgIHsgbGFiZWw6ICJaeXdPbyIsICAgICAgIGdhbWU6ICJjczIiLCAgICAgICAgc2VuczogMi4wLCAgIGRwaTogNDAwIH0sCiAgICB7IGxhYmVsOiAibTBORVNZIiwgICAgICBnYW1lOiAiY3MyIiwgICAgICAgIHNlbnM6IDEuMTUsICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogIk5pS28iLCAgICAgICAgZ2FtZTogImNzMiIsICAgICAgICBzZW5zOiAxLjU1LCAgZHBpOiA0MDAgfSwKICAgIHsgbGFiZWw6ICJUZW5aIiwgICAgICAgIGdhbWU6ICJ2YWxvcmFudCIsICAgc2VuczogMC4xMzksIGRwaTogMTYwMCB9LAogICAgeyBsYWJlbDogImFzcGFzIiwgICAgICAgZ2FtZTogInZhbG9yYW50IiwgICBzZW5zOiAwLjQsICAgZHBpOiA4MDAgfSwKICAgIHsgbGFiZWw6ICJEZW1vbjEiLCAgICAgIGdhbWU6ICJ2YWxvcmFudCIsICAgc2VuczogMC4xLCAgIGRwaTogMTYwMCB9LAogICAgeyBsYWJlbDogInlheSIsICAgICAgICAgZ2FtZTogInZhbG9yYW50IiwgICBzZW5zOiAwLjI3LCAgZHBpOiA4MDAgfSwKICAgIHsgbGFiZWw6ICJJbXBlcmlhbEhhbCIsIGdhbWU6ICJhcGV4IiwgICAgICAgc2VuczogMS4xLCAgIGRwaTogODAwIH0sCiAgICB7IGxhYmVsOiAiR2VuYnVydGVuIiwgICBnYW1lOiAiYXBleCIsICAgICAgIHNlbnM6IDEuNSwgICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogIlBldGVyYm90IiwgICAgZ2FtZTogImZvcnRuaXRlIiwgICBzZW5zOiA1LjAsICAgZHBpOiA4MDAgfSwKICAgIHsgbGFiZWw6ICJCdWdoYSIsICAgICAgIGdhbWU6ICJmb3J0bml0ZSIsICAgc2VuczogNy4wLCAgIGRwaTogODAwIH0sCiAgICB7IGxhYmVsOiAiU1A5UksxRSIsICAgICBnYW1lOiAib3ZlcndhdGNoMiIsIHNlbnM6IDYuNzUsICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogIlN0YWxrM3IiLCAgICAgZ2FtZTogIm92ZXJ3YXRjaDIiLCBzZW5zOiAzLjU4LCAgZHBpOiAxNjAwIH0KICBdOwoKICAvKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKICAgICBNQVRICiAgICAg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQICovCiAgZnVuY3Rpb24gc2Vuc1RvSW5jaDM2MChzZW5zLCBkcGksIHlhdykgeyByZXR1cm4gMzYwIC8gKHNlbnMgKiBkcGkgKiB5YXcpOyB9CiAgZnVuY3Rpb24gaW5jaDM2MFRvU2VucyhpbmNoMzYwLCBkcGksIHlhdykgeyByZXR1cm4gMzYwIC8gKGluY2gzNjAgKiBkcGkgKiB5YXcpOyB9CgogIGZ1bmN0aW9uIGNvbnZlcnQoZnJvbUlkLCB0b0lkLCBmcm9tU2VucywgZnJvbURQSSwgdG9EUEkpIHsKICAgIHZhciBmZyA9IEdBTUVfTUFQW2Zyb21JZF0sIHRnID0gR0FNRV9NQVBbdG9JZF07CiAgICBpZiAoIWZnIHx8ICF0ZykgcmV0dXJuIG51bGw7CiAgICB2YXIgaSA9IHNlbnNUb0luY2gzNjAoZnJvbVNlbnMsIGZyb21EUEksIGZnLnlhdyk7CiAgICB2YXIgbnMgPSBpbmNoMzYwVG9TZW5zKGksIHRvRFBJLCB0Zy55YXcpOwogICAgcmV0dXJuIHsgbmV3U2VuczogcGFyc2VGbG9hdChucy50b0ZpeGVkKDQpKSwgZURQSTogcGFyc2VGbG9hdCgobnMgKiB0b0RQSSkudG9GaXhlZCgyKSksIGluY2gzNjA6IHBhcnNlRmxvYXQoaS50b0ZpeGVkKDMpKSwgY20zNjA6IHBhcnNlRmxvYXQoKGkgKiAyLjU0KS50b0ZpeGVkKDIpKSB9OwogIH0KCiAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgRE9NIOKAlCB3YWl0IGZvciBlbGVtZW50cyB0byBleGlzdAogICAgIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCAqLwogIGZ1bmN0aW9uIGluaXRXaWRnZXQoKSB7CiAgICB2YXIgZ2V0RWwgPSBmdW5jdGlvbihpZCkgeyByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyB9OwoKICAgIHZhciBmcm9tR2FtZUlucHV0ID0gZ2V0RWwoJ2Zyb21HYW1lSW5wdXQnKSwgZnJvbUdhbWVWYWx1ZSA9IGdldEVsKCdmcm9tR2FtZVZhbHVlJyk7CiAgICB2YXIgZnJvbUdhbWVXcmFwID0gZ2V0RWwoJ2Zyb21HYW1lV3JhcCcpLCBmcm9tRHJvcGRvd24gPSBnZXRFbCgnZnJvbURyb3Bkb3duJyk7CiAgICB2YXIgdG9HYW1lSW5wdXQgPSBnZXRFbCgndG9HYW1lSW5wdXQnKSwgdG9HYW1lVmFsdWUgPSBnZXRFbCgndG9HYW1lVmFsdWUnKTsKICAgIHZhciB0b0dhbWVXcmFwID0gZ2V0RWwoJ3RvR2FtZVdyYXAnKSwgdG9Ecm9wZG93biA9IGdldEVsKCd0b0Ryb3Bkb3duJyk7CiAgICB2YXIgZnJvbVNlbnMgPSBnZXRFbCgnZnJvbVNlbnMnKSwgZnJvbURQSSA9IGdldEVsKCdmcm9tRFBJJyksIHRvRFBJID0gZ2V0RWwoJ3RvRFBJJyk7CiAgICB2YXIgcmVzdWx0UGlsbCA9IGdldEVsKCdyZXN1bHRQaWxsJyksIHJlc3VsdFZhbHVlID0gZ2V0RWwoJ3Jlc3VsdFZhbHVlJyk7CiAgICB2YXIgY29weVJlc3VsdEJ0biA9IGdldEVsKCdjb3B5UmVzdWx0QnRuJyk7CiAgICB2YXIgYWR2YW5jZWRUb2dnbGUgPSBnZXRFbCgnYWR2YW5jZWRUb2dnbGUnKSwgYWR2YW5jZWRTZWN0aW9uID0gZ2V0RWwoJ2FkdmFuY2VkU2VjdGlvbicpOwogICAgdmFyIHJlc2V0QnRuID0gZ2V0RWwoJ3Jlc2V0QnRuJyk7CiAgICB2YXIgYWR2RURQSSA9IGdldEVsKCdhZHZFRFBJJyksIGFkdkNtID0gZ2V0RWwoJ2FkdkNtJyksIGFkdkluY2ggPSBnZXRFbCgnYWR2SW5jaCcpOwogICAgdmFyIGVkcGlTZW5zID0gZ2V0RWwoJ2VkcGlTZW5zJyksIGVkcGlEUEkgPSBnZXRFbCgnZWRwaURQSScpLCBlZHBpUmVzdWx0ID0gZ2V0RWwoJ2VkcGlSZXN1bHQnKTsKICAgIHZhciBjb3B5RWRwaUJ0biA9IGdldEVsKCdjb3B5RWRwaUJ0bicpOwogICAgdmFyIGNvbnZlcnRlckhlYWRpbmcgPSBnZXRFbCgnY29udmVydGVySGVhZGluZycpOwogICAgdmFyIGdhbWVOb3RlID0gZ2V0RWwoJ2dhbWVOb3RlJyksIGdhbWVOb3RlVGV4dCA9IGdldEVsKCdnYW1lTm90ZVRleHQnKTsKICAgIHZhciB0b2FzdCA9IGdldEVsKCd0b2FzdCcpLCBzckFubm91bmNlID0gZ2V0RWwoJ3NyQW5ub3VuY2UnKTsKCiAgICAvKiBCYWlsIG91dCBpZiBjcml0aWNhbCBlbGVtZW50cyBhcmUgbWlzc2luZyAqLwogICAgaWYgKCFmcm9tR2FtZUlucHV0IHx8ICF0b0dhbWVJbnB1dCB8fCAhZnJvbVNlbnMgfHwgIXJlc3VsdFZhbHVlKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1JDIFdpZGdldDogQ3JpdGljYWwgRE9NIGVsZW1lbnRzIG5vdCBmb3VuZC4gV2lkZ2V0IGNhbm5vdCBpbml0aWFsaXplLicpOwogICAgICByZXR1cm47CiAgICB9CgogICAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgICBTRUFSQ0hBQkxFIERST1BET1dOCiAgICAgICDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KICAgIGZ1bmN0aW9uIHNldHVwR2FtZURyb3Bkb3duKGlucHV0RWwsIGRyb3Bkb3duRWwsIHdyYXBFbCwgaGlkZGVuRWwpIHsKICAgICAgdmFyIGhpZ2hsaWdodElkeCA9IC0xLCBpc09wZW4gPSBmYWxzZSwgc2F2ZWRWYWx1ZSA9ICcnOwogICAgICB2YXIgc2tpcE5leHRCbHVyID0gZmFsc2U7CgogICAgICBmdW5jdGlvbiBnZXRGaWx0ZXJlZCgpIHsKICAgICAgICB2YXIgcSA9IGlucHV0RWwudmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7CiAgICAgICAgaWYgKCFxIHx8IGlucHV0RWwudmFsdWUgPT09IHNhdmVkVmFsdWUpIHJldHVybiBHQU1FUzsKICAgICAgICByZXR1cm4gR0FNRVMuZmlsdGVyKGZ1bmN0aW9uKGcpIHsgcmV0dXJuIGcubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YocSkgIT09IC0xOyB9KTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcmVuZGVyT3B0aW9ucygpIHsKICAgICAgICB2YXIgZmlsdGVyZWQgPSBnZXRGaWx0ZXJlZCgpOwogICAgICAgIGhpZ2hsaWdodElkeCA9IC0xOwogICAgICAgIGlmICghZmlsdGVyZWQubGVuZ3RoKSB7IGRyb3Bkb3duRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InJjLWRyb3Bkb3duLWVtcHR5Ij5ObyBnYW1lcyBmb3VuZDwvZGl2Pic7IHJldHVybjsgfQogICAgICAgIGRyb3Bkb3duRWwuaW5uZXJIVE1MID0gZmlsdGVyZWQubWFwKGZ1bmN0aW9uKGcsIGkpIHsKICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0icmMtZHJvcGRvd24taXRlbSIgZGF0YS1pZD0iJyArIGcuaWQgKyAnIiBkYXRhLWlkeD0iJyArIGkgKyAnIiByb2xlPSJvcHRpb24iPicgKyBlc2MoZy5uYW1lKSArICc8L2Rpdj4nOwogICAgICAgIH0pLmpvaW4oJycpOwogICAgICAgIHZhciBpdGVtcyA9IGRyb3Bkb3duRWwucXVlcnlTZWxlY3RvckFsbCgnLnJjLWRyb3Bkb3duLWl0ZW0nKTsKICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGl0ZW1zLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAoZnVuY3Rpb24oaXRlbSkgewogICAgICAgICAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICBza2lwTmV4dEJsdXIgPSB0cnVlOwogICAgICAgICAgICAgIHNlbGVjdEdhbWUoaXRlbS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnKSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBjbGVhckhMKCk7CiAgICAgICAgICAgICAgaXRlbS5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHRlZCcpOwogICAgICAgICAgICAgIGhpZ2hsaWdodElkeCA9IHBhcnNlSW50KGl0ZW0uZ2V0QXR0cmlidXRlKCdkYXRhLWlkeCcpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9KShpdGVtc1tqXSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBmdW5jdGlvbiBjbGVhckhMKCkgewogICAgICAgIHZhciBlbHMgPSBkcm9wZG93bkVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yYy1kcm9wZG93bi1pdGVtJyk7CiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlbHMubGVuZ3RoOyBqKyspIHsgZWxzW2pdLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZ2hsaWdodGVkJyk7IH0KICAgICAgfQoKICAgICAgZnVuY3Rpb24gb3BlbigpIHsKICAgICAgICBpZiAoaXNPcGVuKSByZXR1cm47IGlzT3BlbiA9IHRydWU7IHNhdmVkVmFsdWUgPSBpbnB1dEVsLnZhbHVlOwogICAgICAgIGlmIChoaWRkZW5FbC52YWx1ZSkgaW5wdXRFbC52YWx1ZSA9ICcnOwogICAgICAgIGRyb3Bkb3duRWwuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwogICAgICAgIGRyb3Bkb3duRWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgd3JhcEVsLmNsYXNzTGlzdC5hZGQoJ29wZW4nLCAnZm9jdXNlZCcpOwogICAgICAgIGlucHV0RWwuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTsKICAgICAgICByZW5kZXJPcHRpb25zKCk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIGNsb3NlKCkgewogICAgICAgIGlmICghaXNPcGVuKSByZXR1cm47IGlzT3BlbiA9IGZhbHNlOwogICAgICAgIGRyb3Bkb3duRWwuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpOwogICAgICAgIGRyb3Bkb3duRWwuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIHdyYXBFbC5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJywgJ2ZvY3VzZWQnKTsKICAgICAgICBpbnB1dEVsLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwogICAgICAgIGlmIChoaWRkZW5FbC52YWx1ZSkgeyBpbnB1dEVsLnZhbHVlID0gR0FNRV9NQVBbaGlkZGVuRWwudmFsdWVdID8gR0FNRV9NQVBbaGlkZGVuRWwudmFsdWVdLm5hbWUgOiAnJzsgd3JhcEVsLmNsYXNzTGlzdC5hZGQoJ2hhcy12YWx1ZScpOyB9CiAgICAgICAgZWxzZSB7IGlucHV0RWwudmFsdWUgPSAnJzsgd3JhcEVsLmNsYXNzTGlzdC5yZW1vdmUoJ2hhcy12YWx1ZScpOyB9CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHNlbGVjdEdhbWUoaWQpIHsKICAgICAgICBoaWRkZW5FbC52YWx1ZSA9IGlkOwogICAgICAgIHZhciBnYW1lID0gR0FNRV9NQVBbaWRdOwogICAgICAgIGlucHV0RWwudmFsdWUgPSBnYW1lID8gZ2FtZS5uYW1lIDogJyc7CiAgICAgICAgd3JhcEVsLmNsYXNzTGlzdC5hZGQoJ2hhcy12YWx1ZScpOyB3cmFwRWwuY2xhc3NMaXN0LnJlbW92ZSgnZXJyb3InKTsKICAgICAgICBjbG9zZSgpOyBkb0NvbnZlcnRlckNhbGMoKTsgYW5ub3VuY2UoJ1NlbGVjdGVkOiAnICsgKGdhbWUgPyBnYW1lLm5hbWUgOiAnJykpOwogICAgICB9CgogICAgICBpbnB1dEVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24oZSkgewogICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgb3BlbigpOwogICAgICB9LCB0cnVlKTsKCiAgICAgIGlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uKCkgewogICAgICAgIGlmIChza2lwTmV4dEJsdXIpIHsgc2tpcE5leHRCbHVyID0gZmFsc2U7IHJldHVybjsgfQogICAgICAgIHNldFRpbWVvdXQoY2xvc2UsIDIwMCk7CiAgICAgIH0pOwoKICAgICAgaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIGlmICghaXNPcGVuKSBvcGVuKCk7CiAgICAgICAgcmVuZGVyT3B0aW9ucygpOwogICAgICB9KTsKCiAgICAgIGlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBpZiAoIWlzT3Blbikgb3BlbigpOwogICAgICB9KTsKCiAgICAgIGlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIH0pOwoKICAgICAgaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgIHZhciBpdGVtcyA9IGRyb3Bkb3duRWwucXVlcnlTZWxlY3RvckFsbCgnLnJjLWRyb3Bkb3duLWl0ZW0nKTsKICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgaWYgKCFpc09wZW4pIG9wZW4oKTsgaWYgKGl0ZW1zLmxlbmd0aCkgeyBoaWdobGlnaHRJZHggPSBNYXRoLm1pbihoaWdobGlnaHRJZHggKyAxLCBpdGVtcy5sZW5ndGggLSAxKTsgY2xlYXJITCgpOyBpdGVtc1toaWdobGlnaHRJZHhdLmNsYXNzTGlzdC5hZGQoJ2hpZ2hsaWdodGVkJyk7IGl0ZW1zW2hpZ2hsaWdodElkeF0uc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiAnbmVhcmVzdCd9KTsgfSB9CiAgICAgICAgZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykgeyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IGlmIChpdGVtcy5sZW5ndGgpIHsgaGlnaGxpZ2h0SWR4ID0gTWF0aC5tYXgoaGlnaGxpZ2h0SWR4IC0gMSwgMCk7IGNsZWFySEwoKTsgaXRlbXNbaGlnaGxpZ2h0SWR4XS5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHRlZCcpOyBpdGVtc1toaWdobGlnaHRJZHhdLnNjcm9sbEludG9WaWV3KHtibG9jazogJ25lYXJlc3QnfSk7IH0gfQogICAgICAgIGVsc2UgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgaWYgKGhpZ2hsaWdodElkeCA+PSAwICYmIGl0ZW1zW2hpZ2hsaWdodElkeF0pIHNlbGVjdEdhbWUoaXRlbXNbaGlnaGxpZ2h0SWR4XS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnKSk7IH0KICAgICAgICBlbHNlIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHsgZS5zdG9wUHJvcGFnYXRpb24oKTsgY2xvc2UoKTsgaW5wdXRFbC5ibHVyKCk7IH0KICAgICAgfSk7CgogICAgICByZXR1cm4geyBzZWxlY3RHYW1lOiBzZWxlY3RHYW1lLCBjbG9zZTogY2xvc2UsIGdldFZhbHVlOiBmdW5jdGlvbigpIHsgcmV0dXJuIGhpZGRlbkVsLnZhbHVlOyB9IH07CiAgICB9CgogICAgdmFyIGZyb21HYW1lREQgPSBzZXR1cEdhbWVEcm9wZG93bihmcm9tR2FtZUlucHV0LCBmcm9tRHJvcGRvd24sIGZyb21HYW1lV3JhcCwgZnJvbUdhbWVWYWx1ZSk7CiAgICB2YXIgdG9HYW1lREQgPSBzZXR1cEdhbWVEcm9wZG93bih0b0dhbWVJbnB1dCwgdG9Ecm9wZG93biwgdG9HYW1lV3JhcCwgdG9HYW1lVmFsdWUpOwoKICAgIC8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgICAgQ09OVkVSVEVSCiAgICAgICDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KICAgIGZ1bmN0aW9uIHVwZGF0ZUhlYWRpbmcoKSB7CiAgICAgIHZhciBmID0gZnJvbUdhbWVWYWx1ZS52YWx1ZSwgdCA9IHRvR2FtZVZhbHVlLnZhbHVlOwogICAgICBpZiAoZiAmJiB0KSB7IGNvbnZlcnRlckhlYWRpbmcuaW5uZXJIVE1MID0gJzxzcGFuIGNsYXNzPSJyYy1oMi1hY2NlbnQiPicgKyBlc2MoR0FNRV9NQVBbZl0gPyBHQU1FX01BUFtmXS5uYW1lIDogZikgKyAnPC9zcGFuPiB0byA8c3BhbiBjbGFzcz0icmMtaDItYWNjZW50Ij4nICsgZXNjKEdBTUVfTUFQW3RdID8gR0FNRV9NQVBbdF0ubmFtZSA6IHQpICsgJzwvc3Bhbj4gU2Vuc2l0aXZpdHkgQ29udmVydGVyJzsgY29udmVydGVySGVhZGluZy5jbGFzc0xpc3QucmVtb3ZlKCdlbXB0eScpOyB9CiAgICAgIGVsc2UgaWYgKGYpIHsgY29udmVydGVySGVhZGluZy5pbm5lckhUTUwgPSAnPHNwYW4gY2xhc3M9InJjLWgyLWFjY2VudCI+JyArIGVzYyhHQU1FX01BUFtmXSA\/IEdBTUVfTUFQW2ZdLm5hbWUgOiBmKSArICc8L3NwYW4+IFNlbnNpdGl2aXR5IENvbnZlcnRlcic7IGNvbnZlcnRlckhlYWRpbmcuY2xhc3NMaXN0LnJlbW92ZSgnZW1wdHknKTsgfQogICAgICBlbHNlIGlmICh0KSB7IGNvbnZlcnRlckhlYWRpbmcuaW5uZXJIVE1MID0gJ0NvbnZlcnQgdG8gPHNwYW4gY2xhc3M9InJjLWgyLWFjY2VudCI+JyArIGVzYyhHQU1FX01BUFt0XSA\/IEdBTUVfTUFQW3RdLm5hbWUgOiB0KSArICc8L3NwYW4+JzsgY29udmVydGVySGVhZGluZy5jbGFzc0xpc3QucmVtb3ZlKCdlbXB0eScpOyB9CiAgICAgIGVsc2UgeyBjb252ZXJ0ZXJIZWFkaW5nLmlubmVySFRNTCA9ICcnOyBjb252ZXJ0ZXJIZWFkaW5nLmNsYXNzTGlzdC5hZGQoJ2VtcHR5Jyk7IH0KICAgIH0KCiAgICBmdW5jdGlvbiB1cGRhdGVHYW1lTm90ZXMoKSB7CiAgICAgIHZhciBmID0gZnJvbUdhbWVWYWx1ZS52YWx1ZSwgdCA9IHRvR2FtZVZhbHVlLnZhbHVlLCBub3RlcyA9IFtdOwogICAgICBpZiAoZiAmJiBHQU1FX01BUFtmXSAmJiBHQU1FX01BUFtmXS5ub3RlKSBub3Rlcy5wdXNoKEdBTUVfTUFQW2ZdLm5hbWUgKyAnOiAnICsgR0FNRV9NQVBbZl0ubm90ZSk7CiAgICAgIGlmICh0ICYmIEdBTUVfTUFQW3RdICYmIEdBTUVfTUFQW3RdLm5vdGUgJiYgdCAhPT0gZikgbm90ZXMucHVzaChHQU1FX01BUFt0XS5uYW1lICsgJzogJyArIEdBTUVfTUFQW3RdLm5vdGUpOwogICAgICBpZiAobm90ZXMubGVuZ3RoKSB7IGdhbWVOb3RlVGV4dC50ZXh0Q29udGVudCA9IG5vdGVzLmpvaW4oJyBcdTAwQjcgJyk7IGdhbWVOb3RlLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsgfQogICAgICBlbHNlIHsgZ2FtZU5vdGUuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOyB9CiAgICB9CgogICAgZnVuY3Rpb24gZG9Db252ZXJ0ZXJDYWxjKCkgewogICAgICB2YXIgZiA9IGZyb21HYW1lVmFsdWUudmFsdWUsIHQgPSB0b0dhbWVWYWx1ZS52YWx1ZTsKICAgICAgdmFyIHMgPSBwYXJzZUZsb2F0KGZyb21TZW5zLnZhbHVlKSwgZEYgPSBwYXJzZUZsb2F0KGZyb21EUEkudmFsdWUpLCBkVCA9IHBhcnNlRmxvYXQodG9EUEkudmFsdWUpOwogICAgICB1cGRhdGVIZWFkaW5nKCk7IHVwZGF0ZUdhbWVOb3RlcygpOwogICAgICBpZiAoIWYgfHwgIXQgfHwgaXNOYU4ocykgfHwgcyA8PSAwIHx8IGlzTmFOKGRGKSB8fCBkRiA8PSAwIHx8IGlzTmFOKGRUKSB8fCBkVCA8PSAwKSB7CiAgICAgICAgcmVzdWx0VmFsdWUudGV4dENvbnRlbnQgPSAnMC4wMCc7IHJlc3VsdFBpbGwuY2xhc3NMaXN0LmFkZCgnd2FpdGluZycpOyByZXN1bHRQaWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NhbGN1bGF0aW5nJyk7CiAgICAgICAgYWR2RURQSS50ZXh0Q29udGVudCA9ICcwLjAwJzsgYWR2Q20udGV4dENvbnRlbnQgPSAnMC4wMCc7IGFkdkluY2gudGV4dENvbnRlbnQgPSAnMC4wMCc7IHJldHVybjsKICAgICAgfQogICAgICB2YXIgciA9IGNvbnZlcnQoZiwgdCwgcywgZEYsIGRUKTsgaWYgKCFyKSByZXR1cm47CiAgICAgIHJlc3VsdFBpbGwuY2xhc3NMaXN0LnJlbW92ZSgnd2FpdGluZycpOyByZXN1bHRQaWxsLmNsYXNzTGlzdC5hZGQoJ2NhbGN1bGF0aW5nJyk7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJlc3VsdFBpbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2FsY3VsYXRpbmcnKTsgfSwgMzAwKTsKICAgICAgcmVzdWx0VmFsdWUudGV4dENvbnRlbnQgPSByLm5ld1NlbnM7IGFkdkVEUEkudGV4dENvbnRlbnQgPSByLmVEUEk7IGFkdkNtLnRleHRDb250ZW50ID0gci5jbTM2MDsgYWR2SW5jaC50ZXh0Q29udGVudCA9IHIuaW5jaDM2MDsKICAgICAgYW5ub3VuY2UoJ0NvbnZlcnRlZDogJyArIHIubmV3U2VucyArICcgc2Vuc2l0aXZpdHkgaW4gJyArIChHQU1FX01BUFt0XSA\/IEdBTUVfTUFQW3RdLm5hbWUgOiB0KSk7CiAgICB9CgogICAgZnJvbVNlbnMuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBkb0NvbnZlcnRlckNhbGMpOwogICAgZnJvbURQSS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGRvQ29udmVydGVyQ2FsYyk7CiAgICB0b0RQSS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGRvQ29udmVydGVyQ2FsYyk7CgogICAgLyogU3dhcCAqLwogICAgZ2V0RWwoJ3N3YXBCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGYgPSBmcm9tR2FtZVZhbHVlLnZhbHVlLCB0biA9IGZyb21HYW1lSW5wdXQudmFsdWUsIHRkID0gZnJvbURQSS52YWx1ZTsKICAgICAgZnJvbUdhbWVWYWx1ZS52YWx1ZSA9IHRvR2FtZVZhbHVlLnZhbHVlOyBmcm9tR2FtZUlucHV0LnZhbHVlID0gdG9HYW1lSW5wdXQudmFsdWU7CiAgICAgIGZyb21HYW1lV3JhcC5jbGFzc0xpc3QudG9nZ2xlKCdoYXMtdmFsdWUnLCAhIWZyb21HYW1lVmFsdWUudmFsdWUpOwogICAgICB0b0dhbWVWYWx1ZS52YWx1ZSA9IHRmOyB0b0dhbWVJbnB1dC52YWx1ZSA9IHRuOwogICAgICB0b0dhbWVXcmFwLmNsYXNzTGlzdC50b2dnbGUoJ2hhcy12YWx1ZScsICEhdG9HYW1lVmFsdWUudmFsdWUpOwogICAgICBmcm9tRFBJLnZhbHVlID0gdG9EUEkudmFsdWU7IHRvRFBJLnZhbHVlID0gdGQ7CiAgICAgIHZhciBjdiA9IHBhcnNlRmxvYXQocmVzdWx0VmFsdWUudGV4dENvbnRlbnQpOwogICAgICBpZiAoIWlzTmFOKGN2KSAmJiBjdiA+IDApIGZyb21TZW5zLnZhbHVlID0gY3Y7CiAgICAgIGRvQ29udmVydGVyQ2FsYygpOyBhbm5vdW5jZSgnR2FtZXMgYW5kIHNldHRpbmdzIHN3YXBwZWQnKTsKICAgIH0pOwoKICAgIC8qIEFkdmFuY2VkIHRvZ2dsZSAqLwogICAgYWR2YW5jZWRUb2dnbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIHYgPSBhZHZhbmNlZFNlY3Rpb24uY2xhc3NMaXN0LnRvZ2dsZSgndmlzaWJsZScpOwogICAgICBhZHZhbmNlZFRvZ2dsZS5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCB2KTsKICAgICAgYWR2YW5jZWRUb2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgdik7CiAgICAgIGFubm91bmNlKHYgPyAnQWR2YW5jZWQgcmVzdWx0cyBzaG93bicgOiAnQWR2YW5jZWQgcmVzdWx0cyBoaWRkZW4nKTsKICAgIH0pOwoKICAgIC8qIFJlc2V0ICovCiAgICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICBmcm9tR2FtZVZhbHVlLnZhbHVlID0gJyc7IGZyb21HYW1lSW5wdXQudmFsdWUgPSAnJzsgZnJvbUdhbWVXcmFwLmNsYXNzTGlzdC5yZW1vdmUoJ2hhcy12YWx1ZScsICdlcnJvcicpOwogICAgICB0b0dhbWVWYWx1ZS52YWx1ZSA9ICcnOyB0b0dhbWVJbnB1dC52YWx1ZSA9ICcnOyB0b0dhbWVXcmFwLmNsYXNzTGlzdC5yZW1vdmUoJ2hhcy12YWx1ZScsICdlcnJvcicpOwogICAgICBmcm9tU2Vucy52YWx1ZSA9ICcnOyBmcm9tRFBJLnZhbHVlID0gJzgwMCc7IHRvRFBJLnZhbHVlID0gJzgwMCc7CiAgICAgIHJlc3VsdFZhbHVlLnRleHRDb250ZW50ID0gJzAuMDAnOyByZXN1bHRQaWxsLmNsYXNzTGlzdC5hZGQoJ3dhaXRpbmcnKTsKICAgICAgYWR2RURQSS50ZXh0Q29udGVudCA9ICcwLjAwJzsgYWR2Q20udGV4dENvbnRlbnQgPSAnMC4wMCc7IGFkdkluY2gudGV4dENvbnRlbnQgPSAnMC4wMCc7CiAgICAgIHVwZGF0ZUhlYWRpbmcoKTsgdXBkYXRlR2FtZU5vdGVzKCk7IGFubm91bmNlKCdBbGwgZmllbGRzIHJlc2V0Jyk7CiAgICB9KTsKCiAgICAvKiBDb3B5IOKAlCB3aXRoIGZhbGxiYWNrIGZvciBIVFRQIC8gaWZyYW1lIC8gb2xkZXIgYnJvd3NlcnMgKi8KICAgIGZ1bmN0aW9uIGNvcHlUb0NsaXBib2FyZCh0ZXh0LCBidG4pIHsKICAgICAgaWYgKCF0ZXh0IHx8IHRleHQgPT09ICcwLjAwJyB8fCB0ZXh0ID09PSAnMC4wJykgeyBhbm5vdW5jZSgnTm8gdmFsdWUgdG8gY29weScpOyByZXR1cm47IH0KCiAgICAgIGZ1bmN0aW9uIG9uU3VjY2VzcygpIHsKICAgICAgICBidG4uY2xhc3NMaXN0LmFkZCgnY29waWVkJyk7CiAgICAgICAgYnRuLmlubmVySFRNTCA9ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwb2x5bGluZSBwb2ludHM9IjIwIDYgOSAxNyA0IDEyIi8+PC9zdmc+JzsKICAgICAgICBzaG93VG9hc3QoKTsgYW5ub3VuY2UoJ0NvcGllZDogJyArIHRleHQpOwogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICBidG4uY2xhc3NMaXN0LnJlbW92ZSgnY29waWVkJyk7CiAgICAgICAgICBidG4uaW5uZXJIVE1MID0gJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxyZWN0IHg9IjkiIHk9IjkiIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyIgcng9IjIiLz48cGF0aCBkPSJNNSAxNUg0YTIgMiAwIDAxLTItMlY0YTIgMiAwIDAxMi0yaDlhMiAyIDAgMDEyIDJ2MSIvPjwvc3ZnPic7CiAgICAgICAgfSwgMjAwMCk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIGZhbGxiYWNrQ29weSgpIHsKICAgICAgICB0cnkgewogICAgICAgICAgdmFyIHRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsKICAgICAgICAgIHRhLnZhbHVlID0gdGV4dDsKICAgICAgICAgIHRhLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJzsKICAgICAgICAgIHRhLnN0eWxlLmxlZnQgPSAnLTk5OTlweCc7CiAgICAgICAgICB0YS5zdHlsZS50b3AgPSAnLTk5OTlweCc7CiAgICAgICAgICB0YS5zdHlsZS5vcGFjaXR5ID0gJzAnOwogICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YSk7CiAgICAgICAgICB0YS5mb2N1cygpOwogICAgICAgICAgdGEuc2VsZWN0KCk7CiAgICAgICAgICB2YXIgb2sgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpOwogICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0YSk7CiAgICAgICAgICBpZiAob2spIHsgb25TdWNjZXNzKCk7IH0gZWxzZSB7IGFubm91bmNlKCdDb3B5IGZhaWxlZCcpOyB9CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7IGFubm91bmNlKCdDb3B5IGZhaWxlZCcpOyB9CiAgICAgIH0KCiAgICAgIGlmIChuYXZpZ2F0b3IuY2xpcGJvYXJkICYmIHdpbmRvdy5pc1NlY3VyZUNvbnRleHQpIHsKICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KS50aGVuKG9uU3VjY2VzcykuY2F0Y2goZmFsbGJhY2tDb3B5KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmYWxsYmFja0NvcHkoKTsKICAgICAgfQogICAgfQoKICAgIGNvcHlSZXN1bHRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgY29weVRvQ2xpcGJvYXJkKHJlc3VsdFZhbHVlLnRleHRDb250ZW50LCBjb3B5UmVzdWx0QnRuKTsgfSk7CiAgICBjb3B5RWRwaUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgeyBjb3B5VG9DbGlwYm9hcmQoZWRwaVJlc3VsdC50ZXh0Q29udGVudCwgY29weUVkcGlCdG4pOyB9KTsKCiAgICBmdW5jdGlvbiBzaG93VG9hc3QoKSB7IHRvYXN0LmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsgc2V0VGltZW91dChmdW5jdGlvbigpIHsgdG9hc3QuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOyB9LCAyNTAwKTsgfQoKICAgIC8qIGVEUEkgQ2FsY3VsYXRvciAqLwogICAgZnVuY3Rpb24gZG9FZHBpQ2FsYygpIHsKICAgICAgdmFyIHMgPSBwYXJzZUZsb2F0KGVkcGlTZW5zLnZhbHVlKSwgZCA9IHBhcnNlRmxvYXQoZWRwaURQSS52YWx1ZSk7CiAgICAgIGlmIChpc05hTihzKSB8fCBzIDw9IDAgfHwgaXNOYU4oZCkgfHwgZCA8PSAwKSB7IGVkcGlSZXN1bHQudGV4dENvbnRlbnQgPSAnMC4wJzsgZWRwaVJlc3VsdC5jbGFzc0xpc3QuYWRkKCd3YWl0aW5nJyk7IHJldHVybjsgfQogICAgICB2YXIgZSA9IHMgKiBkOwogICAgICBlZHBpUmVzdWx0LnRleHRDb250ZW50ID0gcGFyc2VGbG9hdChlLnRvRml4ZWQoMSkpOyBlZHBpUmVzdWx0LmNsYXNzTGlzdC5yZW1vdmUoJ3dhaXRpbmcnKTsKICAgICAgYW5ub3VuY2UoJ2VEUEk6ICcgKyBlLnRvRml4ZWQoMSkpOwogICAgfQogICAgZWRwaVNlbnMuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBkb0VkcGlDYWxjKTsKICAgIGVkcGlEUEkuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBkb0VkcGlDYWxjKTsKCiAgICAvKiBQcm8gcHJlc2V0cyAqLwogICAgZnVuY3Rpb24gcmVuZGVyUHJlc2V0cygpIHsKICAgICAgdmFyIGdyaWQgPSBnZXRFbCgncHJlc2V0c0dyaWQnKTsKICAgICAgaWYgKCFncmlkKSByZXR1cm47CiAgICAgIGdyaWQuaW5uZXJIVE1MID0gUFJPX1BSRVNFVFMubWFwKGZ1bmN0aW9uKHApIHsKICAgICAgICB2YXIgZ2FtZSA9IEdBTUVfTUFQW3AuZ2FtZV07CiAgICAgICAgdmFyIHNuID0gZ2FtZSA\/IGdhbWUubmFtZS5yZXBsYWNlKCdDb3VudGVyLVN0cmlrZSAyJywgJ0NTMicpLnJlcGxhY2UoJ092ZXJ3YXRjaCAyJywgJ09XMicpLnJlcGxhY2UoJ0FwZXggTGVnZW5kcycsICdBcGV4JykucmVwbGFjZSgnRXNjYXBlIGZyb20gVGFya292JywgJ0VGVCcpIDogcC5nYW1lOwogICAgICAgIHJldHVybiAnPGJ1dHRvbiBjbGFzcz0icmMtcHJlc2V0LWNoaXAiIGRhdGEtZ2FtZT0iJyArIHAuZ2FtZSArICciIGRhdGEtc2Vucz0iJyArIHAuc2VucyArICciIGRhdGEtZHBpPSInICsgcC5kcGkgKyAnIj4nICsgZXNjKHAubGFiZWwpICsgJyA8c3BhbiBjbGFzcz0icHJlc2V0LWdhbWUiPicgKyBzbiArICcgJyArIHAuc2VucyArICdAJyArIHAuZHBpICsgJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgICB9KS5qb2luKCcnKTsKICAgICAgdmFyIGNoaXBzID0gZ3JpZC5xdWVyeVNlbGVjdG9yQWxsKCcucmMtcHJlc2V0LWNoaXAnKTsKICAgICAgZm9yICh2YXIgY2kgPSAwOyBjaSA8IGNoaXBzLmxlbmd0aDsgY2krKykgewogICAgICAgIChmdW5jdGlvbihjaGlwKSB7CiAgICAgICAgICBjaGlwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZyb21HYW1lREQuc2VsZWN0R2FtZShjaGlwLmdldEF0dHJpYnV0ZSgnZGF0YS1nYW1lJykpOwogICAgICAgICAgICBmcm9tU2Vucy52YWx1ZSA9IGNoaXAuZ2V0QXR0cmlidXRlKCdkYXRhLXNlbnMnKTsKICAgICAgICAgICAgZnJvbURQSS52YWx1ZSA9IGNoaXAuZ2V0QXR0cmlidXRlKCdkYXRhLWRwaScpOwogICAgICAgICAgICBkb0NvbnZlcnRlckNhbGMoKTsgYW5ub3VuY2UoJ0FwcGxpZWQgJyArIGNoaXAudGV4dENvbnRlbnQudHJpbSgpICsgJyBzZXR0aW5ncycpOwogICAgICAgICAgfSk7CiAgICAgICAgfSkoY2hpcHNbY2ldKTsKICAgICAgfQogICAgfQoKICAgIC8qIENsb3NlIGRyb3Bkb3ducyBvbiBvdXRzaWRlIGNsaWNrIOKAlCB1c2UgdGltZW91dCB0byBhdm9pZCByYWNlIHdpdGggb3BlbiAqLwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oZSkgewogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIGlmICghZnJvbUdhbWVXcmFwLmNvbnRhaW5zKGUudGFyZ2V0KSkgZnJvbUdhbWVERC5jbG9zZSgpOwogICAgICAgIGlmICghdG9HYW1lV3JhcC5jb250YWlucyhlLnRhcmdldCkpIHRvR2FtZURELmNsb3NlKCk7CiAgICAgIH0sIDEwKTsKICAgIH0pOwoKICAgIC8qIEluaXQgKi8KICAgIHJlbmRlclByZXNldHMoKTsKICB9CgogIC8qIFV0aWxpdGllcyAob3V0c2lkZSBpbml0V2lkZ2V0IHNvIHRoZXkgYXJlIGF2YWlsYWJsZSkgKi8KICBmdW5jdGlvbiBlc2MocykgeyB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBkLnRleHRDb250ZW50ID0gU3RyaW5nKHMpOyByZXR1cm4gZC5pbm5lckhUTUw7IH0KICBmdW5jdGlvbiBhbm5vdW5jZShtc2cpIHsKICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzckFubm91bmNlJyk7CiAgICBpZiAoZWwpIHsgZWwudGV4dENvbnRlbnQgPSBtc2c7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGVsLnRleHRDb250ZW50ID0gJyc7IH0sIDE1MDApOyB9CiAgfQoKICAvKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKICAgICBTQUZFIElOSVQg4oCUIHdvcmtzIGV2ZW4gaWYgc2NyaXB0IGlzIG1vdmVkL2RlZmVycmVkCiAgICAg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQICovCiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRXaWRnZXQpOwogIH0gZWxzZSB7CiAgICBpbml0V2lkZ2V0KCk7CiAgfQoK\");var s=document.createElement(\"script\");s.textContent=c;document.currentScript.parentNode.insertBefore(s,document.currentScript);})()\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-mouse-sensitivity-converter-convert-your-sens-between-23-fps-games-instantly\">Conversor de Sensibilidade do Mouse \u2014 Converta Sua Sensibilidade Entre 23 Jogos FPS Instantaneamente<\/h2>\n\n\n\n<p>Um conversor de sensibilidade do mouse \u00e9 uma calculadora gratuita, baseada em navegador, que traduz as configura\u00e7\u00f5es do seu mouse de um jogo para outro usando valores de yaw verificados. A mem\u00f3ria muscular \u00e9 cr\u00edtica para uma mira consistente. Se voc\u00ea passou centenas de horas dominando seus flick shots em <em>Counter-Strike 2<\/em>, voc\u00ea n\u00e3o deveria ter que reaprender sua mira ao mudar para <em>Valorant<\/em> ou <em>Deadlock<\/em>.<\/p>\n\n\n\n<p>Esta ferramenta garante que um giro de 360 graus no seu jogo de origem exija o mesmo movimento f\u00edsico do mouse no seu jogo de destino. Ela usa a f\u00f3rmula universal <code>inches_per_360<\/code> para garantir precis\u00e3o matem\u00e1tica em 23 grandes t\u00edtulos de PC.<\/p>\n\n\n\n<div style=\"background-color: #f9f9f9; padding: 20px; border-radius: 8px; margin-bottom: 20px;\">\n<h3 style=\"margin-top: 0;\">Resumo<\/h3>\n<p>Voc\u00ea confia na mem\u00f3ria muscular para acertar seus tiros. Ao alternar entre jogos FPS, diferentes engines de jogo interpretam os movimentos do seu mouse de forma diferente. Este artigo explica como voc\u00ea pode converter instantaneamente suas configura\u00e7\u00f5es de sensibilidade para manter uma dist\u00e2ncia de giro de 360 graus consistente em todos os seus jogos de tiro favoritos. Voc\u00ea encontrar\u00e1 matem\u00e1tica de convers\u00e3o verificada para os principais t\u00edtulos de 2026, configura\u00e7\u00f5es de jogadores profissionais e uma explica\u00e7\u00e3o clara de termos t\u00e9cnicos como eDPI e cm\/360.<\/p>\n<\/div>\n\n\n\n<div style=\"background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 20px; margin-bottom: 20px;\">\n<h3 style=\"margin-top: 0;\">TL;DR<\/h3>\n<ul style=\"margin-bottom: 0;\">\n<li><strong>Consist\u00eancia \u00e9 fundamental:<\/strong> Voc\u00ea deve manter a dist\u00e2ncia f\u00edsica do seu mouse (cm\/360) a mesma em todos os jogos para preservar a mem\u00f3ria muscular.<\/li>\n<li><strong>Engines de jogo variam:<\/strong> Uma sensibilidade de &#8220;2.0&#8221; em CS2 n\u00e3o \u00e9 a mesma que &#8220;2.0&#8221; em Apex Legends ou Overwatch devido a diferentes valores de &#8220;yaw&#8221;.<\/li>\n<li><strong>DPI importa:<\/strong> Voc\u00ea pode usar esta ferramenta para ajustar sua sensibilidade mesmo se voc\u00ea mudar o DPI do seu mouse (por exemplo, de 400 para 1600).<\/li>\n<li><strong>Conhe\u00e7a seu eDPI:<\/strong> Sua verdadeira sensibilidade \u00e9 uma combina\u00e7\u00e3o do DPI do seu hardware e das configura\u00e7\u00f5es do jogo.<\/li>\n<li><strong>Use a ferramenta:<\/strong> Insira seu jogo atual e configura\u00e7\u00f5es acima para obter seus n\u00fameros exatos para seu novo jogo instantaneamente.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div style=\"background: linear-gradient(135deg, #07F288 0%, #7BF8BE 100%); color: #0a3d2e; padding: 25px; border-radius: 12px; margin-bottom: 30px;\">\n<h3 style=\"margin-top: 0; color: #0a3d2e;\">\ud83d\udccd Sum\u00e1rio<\/h3>\n<ul style=\"list-style-type: none; padding-left: 0;\">\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#how-to-convert\">Como Converter a Sensibilidade do Seu Mouse em 4 Passos<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#cs2-converter\">Conversor de Sensibilidade de Counter-Strike 2 (CS2)<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#valorant-converter\">Conversor de Sensibilidade de Valorant<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#overwatch2-converter\">Conversor de Sensibilidade de Overwatch 2<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#apex-converter\">Conversor de Sensibilidade de Apex Legends<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#fortnite-converter\">Conversor de Sensibilidade de Fortnite<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#cod-converter\">Conversor de Sensibilidade de Call of Duty<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#other-games\">Outros Jogos de Tiro Populares (R6, BF2042, Deadlock, etc.)<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#technical-guide\">Guia T\u00e9cnico: cm\/360 e eDPI<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#pro-settings\">Configura\u00e7\u00f5es de Sensibilidade de Jogadores Profissionais (2025)<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#faq\">Perguntas Frequentes<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-convert\">Como Converter a Sensibilidade do Seu Mouse em 4 Passos<\/h2>\n\n\n\n<p>Voc\u00ea pode sincronizar sua mira em todos os jogos da sua biblioteca em segundos. Siga estes quatro passos simples usando a calculadora acima:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Selecione o Jogo de Origem:<\/strong> Escolha o jogo que voc\u00ea joga atualmente e com o qual se sente confort\u00e1vel no menu suspenso.<\/li>\n\n\n\n<li><strong>Insira as Configura\u00e7\u00f5es:<\/strong> Insira sua sensibilidade atual no jogo e o DPI do seu mouse (por exemplo, 800 ou 1600).<\/li>\n\n\n\n<li><strong>Selecione o Jogo de Destino:<\/strong> Escolha o novo jogo que voc\u00ea deseja jogar.<\/li>\n\n\n\n<li><strong>Visualize o Resultado:<\/strong> A ferramenta exibe instantaneamente sua nova sensibilidade convertida, eDPI e estat\u00edsticas de cm\/360.<\/li>\n<\/ol>\n\n\n\n<p><strong>Dica:<\/strong> Use o recurso &#8220;Trocar&#8221; se precisar reverter rapidamente o c\u00e1lculo para ver como suas novas configura\u00e7\u00f5es ficariam no seu jogo original.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cs2-converter\">Conversor de Sensibilidade de Counter-Strike 2 (CS2)<\/h2>\n\n\n\n<p>CS2 continua sendo o padr\u00e3o ouro para ajuste de sensibilidade devido \u00e0 sua mec\u00e2nica da antiga engine Source. A maioria dos conversores usa CS2 como a linha de base &#8220;1.0&#8221; para c\u00e1lculos. O jogo usa um valor <code>m_yaw<\/code> padr\u00e3o de <strong>0.022<\/strong>.<\/p>\n\n\n\n<div style=\"background-color: #e3f2fd; border-left: 5px solid #2196f3; padding: 15px; margin: 20px 0;\"><strong>Contexto Profissional (2026):<\/strong> Embora 400 DPI fosse o padr\u00e3o hist\u00f3rico para Counter-Strike, muitos profissionais de ponta como m0NESY e NiKo mudaram para DPIs mais altos (800 ou 1600) para reduzir a lat\u00eancia de entrada. Eles ajustam sua sensibilidade no jogo para baixo para compensar, mantendo sua velocidade efetiva a mesma.<\/div>\n\n\n\n<p>Uma faixa de eDPI t\u00edpica para jogadores competitivos de CS2 fica entre 560 e 1236. Se voc\u00ea estiver fora dessa faixa, poder\u00e1 achar sua mira inconsistente em compara\u00e7\u00e3o com a base m\u00e9dia de jogadores.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"valorant-converter\">Conversor de Sensibilidade de Valorant<\/h2>\n\n\n\n<p>Ao converter de CS2 para Valorant, a matem\u00e1tica \u00e9 direta. Valorant usa um valor de yaw de <strong>0.07<\/strong>. Como 0.07 \u00e9 aproximadamente 3.18 vezes maior que 0.022, voc\u00ea simplesmente divide sua sensibilidade de CS2 por 3.18 para obter sua sensibilidade de Valorant.<\/p>\n\n\n\n<p><strong>Considera\u00e7\u00f5es Chave:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hardware:<\/strong> Mouses sem fio leves, como o Razer Viper V3 Pro, dominam a cena. Profissionais como TenZ e aspas os preferem para microajustes.<\/li>\n\n\n\n<li><strong>Campo de Vis\u00e3o (FOV):<\/strong> Valorant tem um FOV fixo de 103\u00b0.<\/li>\n\n\n\n<li><strong>Scopes:<\/strong> Multiplicadores de sensibilidade com mira s\u00e3o espec\u00edficos aqui. A maioria dos jogadores os mant\u00e9m em 1.0, mas alguns os ajustam para obter uma sensa\u00e7\u00e3o de &#8220;1:1&#8221; em rela\u00e7\u00e3o \u00e0 mira livre.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"overwatch2-converter\">Conversor de Sensibilidade de Overwatch 2<\/h2>\n\n\n\n<p>Overwatch 2 \u00e9 mais r\u00e1pido e mais vertical do que os jogos de tiro t\u00e1ticos. O jogo usa um valor de yaw de <strong>0.0066<\/strong>. Como rastrear alvos em movimento r\u00e1pido (como Tracer ou Genji) \u00e9 essencial, o eDPI m\u00e9dio \u00e9 geralmente mais alto aqui (3000\u20136600) do que em CS2 ou Valorant.<\/p>\n\n\n\n<p>Voc\u00ea tamb\u00e9m deve notar que Overwatch permite configura\u00e7\u00f5es espec\u00edficas por her\u00f3i. Por exemplo, jogadores de Widowmaker e Ana frequentemente definem sua &#8220;Sensibilidade de Mira Relativa Enquanto Zoomed&#8221; para <strong>37.89%<\/strong>. Este n\u00famero espec\u00edfico faz com que pequenos flicks enquanto com zoom pare\u00e7am id\u00eanticos \u00e0 sua mira livre.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"apex-converter\">Conversor de Sensibilidade de Apex Legends<\/h2>\n\n\n\n<p>Apex Legends \u00e9 constru\u00eddo em uma vers\u00e3o fortemente modificada da engine Source. Esta \u00e9 uma boa not\u00edcia para a convers\u00e3o: ele compartilha o mesmo valor de yaw de <strong>0.022<\/strong> que CS2. Se voc\u00ea joga CS2 com sensibilidade 1.5, sua sensibilidade de mira livre em Apex Legends tamb\u00e9m \u00e9 1.5.<\/p>\n\n\n\n<p>Embora a convers\u00e3o da mira livre seja 1:1, voc\u00ea deve considerar os multiplicadores de ADS (Aim Down Sights). A maioria dos jogadores mant\u00e9m o multiplicador de ADS em 1.0 para consist\u00eancia. Al\u00e9m disso, o FOV competitivo padr\u00e3o em Apex geralmente \u00e9 maximizado em 110, o que pode fazer a sensibilidade &#8220;parecer&#8221; diferente visualmente, mesmo que a dist\u00e2ncia seja fisicamente a mesma.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fortnite-converter\">Conversor de Sensibilidade de Fortnite<\/h2>\n\n\n\n<p>A convers\u00e3o de sensibilidade de Fortnite requer aten\u00e7\u00e3o cuidadosa porque o jogo usa um slider baseado em porcentagem. Se voc\u00ea inserir &#8220;7&#8221; nas configura\u00e7\u00f5es, a engine do jogo o l\u00ea como 7.0% (ou um multiplicador interno de 0.07). O valor t\u00e9cnico de yaw \u00e9 <strong>0.005555<\/strong>.<\/p>\n\n\n\n<p><strong>Configura\u00e7\u00f5es a observar:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Eixo X e Y:<\/strong> Voc\u00ea pode definir a sensibilidade horizontal (X) e vertical (Y) separadamente. A maioria dos jogadores competitivos as mant\u00e9m travadas no mesmo n\u00famero para consist\u00eancia da mem\u00f3ria muscular.<\/li>\n\n\n\n<li><strong>Multiplicador de Mira:<\/strong> Isso afeta sua velocidade de mira ao segurar o bot\u00e3o direito do mouse.<\/li>\n<\/ul>\n\n\n\n<p>Profissionais de ponta como Peterbot ou Bugha frequentemente preferem clusters de eDPI brutos entre 40 e 56, favorecendo a velocidade para mec\u00e2nicas de constru\u00e7\u00e3o em detrimento da mira de pura precis\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cod-converter\">Conversor de Sensibilidade de Call of Duty \u2014 Modern Warfare III, Warzone &amp; Black Ops 6<\/h2>\n\n\n\n<p>T\u00edtulos recentes de Call of Duty, incluindo <em>Modern Warfare III<\/em>, <em>Warzone<\/em> e <em>Black Ops 6<\/em>, simplificam as coisas ao compartilhar um padr\u00e3o unificado de engine. Todos eles utilizam o valor de yaw de <strong>0.0066<\/strong>, que \u00e9 id\u00eantico ao de Overwatch 2.<\/p>\n\n<p>Ao configurar seu mouse, preste aten\u00e7\u00e3o ao &#8220;ADS Sensitivity Transition Timing&#8221;. Voc\u00ea tamb\u00e9m tem uma escolha entre os modos de sensibilidade do mouse ADS &#8220;Legacy&#8221; e &#8220;Relative&#8221;. O &#8220;Monitor Distance Coefficient&#8221; (padr\u00e3o 1.33) \u00e9 projetado para padronizar sua mira em diferentes n\u00edveis de zoom, ajudando voc\u00ea a mirar em alvos de forma consistente, independentemente da mira que estiver usando.<\/p>\n<!-- \/wp:post-content -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"other-games\">Outros Jogos de Tiro Populares<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:html -->\n<div style=\"grid-template-columns: 1fr 1fr; gap: 20px;\">\n<div>\n<h3 style=\"margin-top: 0;\">Rainbow Six Siege<\/h3>\n<p>Siege usa o modelo de &#8220;visuomotor gain&#8221; da Ubisoft com um yaw padr\u00e3o de <strong>0.00573<\/strong>. A complexidade aqui reside nas miras; voc\u00ea tem controles deslizantes para 1.0x, 2.5x e mais, variando de 1 a 200. Esta ferramenta calcula sua mira padr\u00e3o sem zoom (hipfire), que atua como a base para todas as miras.<\/p>\n<\/div>\n<div>\n<h3 style=\"margin-top: 0;\">Battlefield 2042<\/h3>\n<p>Rodando no motor Frostbite, Battlefield 2042 usa um yaw de <strong>0.0066<\/strong>. Isso corresponde ao padr\u00e3o de CoD. Uma mira consistente \u00e9 vital aqui para fazer a transi\u00e7\u00e3o suave entre a guerra de ve\u00edculos em larga escala e o combate de infantaria apertado.<\/p>\n<\/div>\n<\/div>\n<!-- \/wp:html -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-team-fortress-2-quake-champions-sensitivity-converter\">Conversor de Sensibilidade de Team Fortress 2 &amp; Quake Champions<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Estes s\u00e3o os av\u00f4s da mira moderna. Ambos os jogos rodam em motores cl\u00e1ssicos (Source e id Tech) e usam o yaw padr\u00e3o de <strong>0.022<\/strong>. Isso significa que voc\u00ea tem uma convers\u00e3o direta de 1:1 com CS2 e Apex Legends. Se voc\u00ea est\u00e1 procurando outros <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/steam-games-to-try\">jogos populares da Steam<\/a> para testar sua mira bruta, esses t\u00edtulos continuam sendo os melhores campos de treinamento.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-deadlock-sensitivity-converter\">Conversor de Sensibilidade de Deadlock<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Como o novo h\u00edbrido MOBA-shooter da Valve, Deadlock opera no Source 2. No entanto, a matem\u00e1tica \u00e9 ligeiramente diferente. Ele usa um yaw de <strong>0.044<\/strong>. Isso \u00e9 exatamente <strong>2x<\/strong> o yaw de CS2. Se sua sensibilidade em CS2 \u00e9 2.0, sua sensibilidade em Deadlock deve ser definida para 1.0.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-marvel-rivals-sensitivity-converter\">Conversor de Sensibilidade de Marvel Rivals<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Constru\u00eddo na Unreal Engine 5, Marvel Rivals utiliza um yaw de <strong>0.0066<\/strong>. Jogadores vindo de Overwatch 2 encontrar\u00e3o a escala de sensibilidade id\u00eantica (convers\u00e3o 1:1), tornando a transi\u00e7\u00e3o para este hero shooter perfeita.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-the-finals-sensitivity-converter\">Conversor de Sensibilidade de The Finals<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>The Finals, um shooter da Unreal Engine 5 da Embark, usa um yaw corrigido de <strong>0.0066<\/strong>. A sensibilidade competitiva aqui geralmente varia de 14 a 57 a 800 DPI, dependendo muito se voc\u00ea joga com a classe r\u00e1pida &#8220;Light&#8221; ou a classe mais lenta &#8220;Heavy&#8221;.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-destiny-2-sensitivity-converter\">Conversor de Sensibilidade de Destiny 2<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Destiny 2 compartilha o valor comum de yaw de <strong>0.0066<\/strong> encontrado em CoD e Overwatch. Esteja ciente de que Destiny 2 tem um limite r\u00edgido na velocidade de giro ao correr. Nenhuma quantidade de aumento de sensibilidade pode anular essa limita\u00e7\u00e3o do motor.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-halo-infinite-sensitivity-converter\">Conversor de Sensibilidade de Halo Infinite<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Halo Infinite usa um yaw de <strong>0.022<\/strong>, correspondendo a CS2 e Apex. Embora Halo seja tradicionalmente dominante em controle, jogadores de Mouse e Teclado (MnK) dependem dessa convers\u00e3o 1:1 para manter suas habilidades de rastreamento de jogos de tiro t\u00e1ticos.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-pubg-sensitivity-converter\">Conversor de Sensibilidade de PUBG<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>PUBG tem um yaw de hipfire de <strong>0.002222<\/strong>. O jogo apresenta um sistema por mira muito complexo (General, Vehicle, 2x, 3x, etc.). Esta ferramenta converte a sensibilidade &#8220;General\/Hipfire&#8221;, que define a base para todas as outras miras.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-escape-from-tarkov-sensitivity-converter\">Conversor de Sensibilidade de Escape from Tarkov<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Tarkov \u00e9 \u00fanico. O yaw \u00e9 aproximadamente <strong>0.125<\/strong>, mas sua velocidade de giro real \u00e9 afetada pela sua armadura no jogo, penalidades do capacete e ergonomia da arma. O conversor fornece sua sensibilidade <em>base<\/em>, mas seu equipamento alterar\u00e1 como o mouse se comporta em cada incurs\u00e3o.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-rust-sensitivity-converter\">Conversor de Sensibilidade de Rust<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Rust usa um yaw de aproximadamente <strong>0.00222<\/strong>. Devido a atualiza\u00e7\u00f5es frequentes da Unity, voc\u00ea deve tratar esses resultados como um ponto de partida para ajustes finos, em vez de uma regra absoluta.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-fragpunk-sensitivity-converter\">Conversor de Sensibilidade de FragPunk<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>FragPunk, um dos <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/new-games-2025\">novos jogos lan\u00e7ados em 2025<\/a>, tem um yaw confirmado de <strong>0.0556<\/strong>. Este valor distinto requer uma convers\u00e3o precisa se voc\u00ea vem de jogos de tiro t\u00e1ticos tradicionais.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-splitgate-2-sensitivity-converter\">Conversor de Sensibilidade de Splitgate 2<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Para a sequ\u00eancia do shooter baseado em portais, o yaw confirmado \u00e9 <strong>0.01116<\/strong>. Isso garante que seus flicks de portal permane\u00e7am precisos.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"technical-guide\">O Que \u00c9 cm\/360 e Por Que \u00c9 Importante Para a Mira<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>cm\/360 (cent\u00edmetros por giro de 360 graus) \u00e9 a \u00fanica linguagem universal &#8220;verdadeira&#8221; de sensibilidade. Uma configura\u00e7\u00e3o de sensibilidade de &#8220;2.0&#8221; significa algo diferente em cada motor de jogo, mas &#8220;34cm\/360&#8221; \u00e9 a mesma dist\u00e2ncia f\u00edsica no seu mousepad em todos os lugares.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Ao medir a sensibilidade em cent\u00edmetros, voc\u00ea elimina a confus\u00e3o dos motores de jogo. Por exemplo, um jogador de baixa sensibilidade pode usar 50cm\/360 (movendo o mouse 50cm para fazer um c\u00edrculo completo), enquanto um jogador de alta sensibilidade pode usar 20cm\/360.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"h-understanding-edpi-your-real-sensitivity-number\">Entendendo o eDPI \u2014 Seu N\u00famero Real de Sensibilidade<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>eDPI significa &#8220;effective Dots Per Inch&#8221; (Pontos Por Polegada Efetivos). A f\u00f3rmula \u00e9 simples: <code>eDPI = Sensibilidade \u00d7 DPI<\/code>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Este n\u00famero permite que jogadores com mouses diferentes comparem sua velocidade &#8220;real&#8221; no jogo. Por exemplo, o Jogador A usando 400 DPI e sensibilidade 2.0 tem um eDPI de 800. O Jogador B usando 800 DPI e sensibilidade 1.0 <em>tamb\u00e9m<\/em> tem um eDPI de 800. A velocidade de mira deles \u00e9 id\u00eantica.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>No entanto, o eDPI n\u00e3o \u00e9 transfer\u00edvel entre jogos diferentes. Um eDPI de 800 em CS2 \u00e9 vastamente diferente de um eDPI de 800 em Valorant. Se voc\u00ea est\u00e1 <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/build-a-cheap-gaming-pc\">otimizando sua configura\u00e7\u00e3o de PC gamer<\/a>, decidir por um DPI padr\u00e3o (como 800 ou 1600) \u00e9 o primeiro passo para uma mira consistente.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"pro-settings\">Configura\u00e7\u00f5es de Sensibilidade de Jogadores Profissionais (2025)<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ver o que os profissionais usam pode lhe dar uma boa base. Observe a tend\u00eancia para 1600 DPI e mouses mais leves (abaixo de 60g) nos \u00faltimos anos.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:html -->\n<div>\n<table style=\"width: 100%; border-collapse: collapse; margin-bottom: 20px;\">\n<thead>\n<tr style=\"background-color: #000; color: #fff; text-align: left;\">\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Nome do Jogador<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Jogo<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">DPI<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Sensibilidade<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">eDPI<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Mouse<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">donk<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">CS2<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1.25<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1000<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL 2<\/td>\n<\/tr>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"padding: 10px; border: 1px solid #ddd;\">m0NESY<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">CS2<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">400<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">2.30<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">920<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL 2<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">TenZ<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Valorant<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1600<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">0.175<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">280<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Razer Viper V3 Pro<\/td>\n<\/tr>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"padding: 10px; border: 1px solid #ddd;\">aspas<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Valorant<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">0.40<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">320<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Razer DeathAdder V3<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">ImperialHal<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Apex Legends<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1.3<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1040<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL<\/td>\n<\/tr>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Bugha<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Fortnite<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">6.0%<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">48<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Stalk3r<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Overwatch 2<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">7.00<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">5600<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL 2<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<!-- \/wp:html -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"h-how-the-conversion-formula-works\">Como a F\u00f3rmula de Convers\u00e3o Funciona<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Acreditamos na transpar\u00eancia. A ferramenta calcula suas configura\u00e7\u00f5es usando a f\u00edsica padr\u00e3o do movimento do mouse. A f\u00f3rmula principal para encontrar a dist\u00e2ncia f\u00edsica de um giro de 360 graus \u00e9:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"center\"} -->\n<p class=\"has-text-align-center\">inches_per_360 = 360 \/ (sensitivity \u00d7 DPI \u00d7 yaw)<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>O conversor inverte esta f\u00f3rmula para o seu jogo alvo. Por exemplo, se voc\u00ea converter uma sensibilidade de CS2 de 2.0 a 400 DPI para Valorant, o c\u00e1lculo fica assim: <code>2.0 \/ 3.1818 = 0.628<\/code>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<!-- \/wp:separator -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"faq\">Perguntas Frequentes<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-how-do-i-convert-cs2-sensitivity-to-valorant\">Como converto a sensibilidade de CS2 para Valorant?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Divida sua sensibilidade de CS2 por <strong>3.1818<\/strong>. Alternativamente, voc\u00ea pode simplesmente usar a ferramenta acima para um c\u00e1lculo instant\u00e2neo e preciso.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-is-cm-360-the-same-as-edpi\">cm\/360 \u00e9 o mesmo que eDPI?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>N\u00e3o. eDPI \u00e9 um n\u00famero digital espec\u00edfico para um motor de jogo. cm\/360 \u00e9 uma medida f\u00edsica da dist\u00e2ncia do mouse em sua mesa, que se aplica ao mundo real.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-does-sensitivity-conversion-work-for-scoped-ads\">A convers\u00e3o de sensibilidade funciona para mira\/ADS?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Este conversor calcula sua sensibilidade de tiro livre (geral). A maioria dos jogos tem multiplicadores separados para ADS (Aim Down Sights) que escalam a partir deste valor de tiro livre, ent\u00e3o acertar o tiro livre \u00e9 o primeiro passo.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-can-i-convert-between-different-dpis\">Posso converter entre diferentes DPIs?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Sim. Nossa ferramenta permite que voc\u00ea insira um DPI diferente para o seu jogo alvo. Ela ajustar\u00e1 matematicamente a sensibilidade necess\u00e1ria para manter seu cm<\/p>\n<!-- \/wp:paragraph -->","protected":false},"excerpt":{"rendered":"<p>Convert mouse sensitivity instantly between CS2, Valorant, Overwatch 2, and 20+ FPS games. Maintain muscle memory with accurate eDPI and cm\/360 calculations.<\/p>\n","protected":false},"author":46,"featured_media":38381,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"cos_headline_score":0,"cos_seo_score":0,"cos_headline_text":"","cos_headline_has_been_analyzed":false,"cos_last_analyzed_headline":[],"_hreflang_tags":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[108],"tags":[],"class_list":["post-38962","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vida-digital"],"jetpack_publicize_connections":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.4 (Yoast SEO v21.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Conversor de Sensibilidade do Mouse para 23 Jogos FPS<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Conversor de Sensibilidade do Mouse para 23 Jogos FPS\" \/>\n<meta property=\"og:description\" content=\"Convert mouse sensitivity instantly between CS2, Valorant, Overwatch 2, and 20+ FPS games. Maintain muscle memory with accurate eDPI and cm\/360 calculations.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps\" \/>\n<meta property=\"og:site_name\" content=\"Recharge Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-20T13:23:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-21T08:28:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/02\/27164737\/hero-image-en-110.png\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"491\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mustafa Aybek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps\",\"url\":\"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps\",\"name\":\"Conversor de Sensibilidade do Mouse para 23 Jogos FPS\",\"isPartOf\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/pt\/#website\"},\"datePublished\":\"2026-04-20T13:23:42+00:00\",\"dateModified\":\"2026-04-21T08:28:33+00:00\",\"author\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/pt\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps#breadcrumb\"},\"inLanguage\":\"pt-pt\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.recharge.com\/blog\/pt\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Conversor de Sensibilidade do Mouse para 23 Jogos FPS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.recharge.com\/blog\/pt\/#website\",\"url\":\"https:\/\/www.recharge.com\/blog\/pt\/\",\"name\":\"Recharge Blog\",\"description\":\"Everything about online safety, smart spending &amp; your digital lifestyle.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.recharge.com\/blog\/pt\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-pt\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.recharge.com\/blog\/pt\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0\",\"name\":\"Mustafa Aybek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-pt\",\"@id\":\"https:\/\/www.recharge.com\/blog\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g\",\"caption\":\"Mustafa Aybek\"},\"url\":\"https:\/\/www.recharge.com\/blog\/pt\/author\/mustafa-aybek\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Conversor de Sensibilidade do Mouse para 23 Jogos FPS","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps","og_locale":"pt_PT","og_type":"article","og_title":"Conversor de Sensibilidade do Mouse para 23 Jogos FPS","og_description":"Convert mouse sensitivity instantly between CS2, Valorant, Overwatch 2, and 20+ FPS games. Maintain muscle memory with accurate eDPI and cm\/360 calculations.","og_url":"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps","og_site_name":"Recharge Blog","article_published_time":"2026-04-20T13:23:42+00:00","article_modified_time":"2026-04-21T08:28:33+00:00","og_image":[{"width":900,"height":491,"url":"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/02\/27164737\/hero-image-en-110.png","type":"image\/png"}],"author":"Mustafa Aybek","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps","url":"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps","name":"Conversor de Sensibilidade do Mouse para 23 Jogos FPS","isPartOf":{"@id":"https:\/\/www.recharge.com\/blog\/pt\/#website"},"datePublished":"2026-04-20T13:23:42+00:00","dateModified":"2026-04-21T08:28:33+00:00","author":{"@id":"https:\/\/www.recharge.com\/blog\/pt\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0"},"breadcrumb":{"@id":"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps#breadcrumb"},"inLanguage":"pt-pt","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.recharge.com\/blog\/pt\/pt\/conversor-de-sensibilidade-do-mouse-para-23-jogos-fps#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.recharge.com\/blog\/pt"},{"@type":"ListItem","position":2,"name":"Conversor de Sensibilidade do Mouse para 23 Jogos FPS"}]},{"@type":"WebSite","@id":"https:\/\/www.recharge.com\/blog\/pt\/#website","url":"https:\/\/www.recharge.com\/blog\/pt\/","name":"Recharge Blog","description":"Everything about online safety, smart spending &amp; your digital lifestyle.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.recharge.com\/blog\/pt\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-pt"},{"@type":"Person","@id":"https:\/\/www.recharge.com\/blog\/pt\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0","name":"Mustafa Aybek","image":{"@type":"ImageObject","inLanguage":"pt-pt","@id":"https:\/\/www.recharge.com\/blog\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g","caption":"Mustafa Aybek"},"url":"https:\/\/www.recharge.com\/blog\/pt\/author\/mustafa-aybek"}]}},"jetpack_featured_media_url":"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/02\/27164737\/hero-image-en-110.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.recharge.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/38962","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.recharge.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.recharge.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/pt\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=38962"}],"version-history":[{"count":3,"href":"https:\/\/www.recharge.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/38962\/revisions"}],"predecessor-version":[{"id":39147,"href":"https:\/\/www.recharge.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/38962\/revisions\/39147"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/pt\/wp-json\/wp\/v2\/media\/38381"}],"wp:attachment":[{"href":"https:\/\/www.recharge.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=38962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=38962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=38962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}