{"id":38961,"date":"2026-04-20T15:23:36","date_gmt":"2026-04-20T13:23:36","guid":{"rendered":"https:\/\/www.recharge.com\/blog\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps"},"modified":"2026-04-21T10:26:20","modified_gmt":"2026-04-21T08:26:20","slug":"convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps","status":"publish","type":"post","link":"https:\/\/www.recharge.com\/blog\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps","title":{"rendered":"Convertidor de Sensibilidad de Mouse para 23 Juegos FPS"},"content":{"rendered":"\n\n<!--\n  RECHARGE \u2014 Convertidor de Sensibilidad del Rat\u00f3n (Incrustaci\u00f3n de WordPress)\n  Inserta esto en un bloque HTML personalizado en WordPress.\n  Todo el CSS est\u00e1 delimitado bajo .rc-widget para evitar conflictos con el 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  <!-- H2 din\u00e1mico: se actualiza a \"Convertidor de sensibilidad de [Juego] a [Juego]\" -->\n  <h2 class=\"rc-converter-heading empty\" id=\"converterHeading\"><\/h2>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 TARJETA DEL CONVERTIDOR \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"rc-card\" id=\"converterCard\">\n    <div class=\"rc-card-title\">Convertidor de Sensibilidad<\/div>\n\n    <!-- Selectores de juego -->\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=\"Juego de origen\">\n        <label class=\"rc-game-label\">De Juego<\/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=\"Intercambiar juegos\" title=\"Intercambiar juegos\">\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=\"Juego de destino\">\n        <label class=\"rc-game-label\">A Juego<\/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    <!-- Sensibilidad + 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=\"Sensibilidad actual\">\n        <label for=\"fromSens\">Sensibilidad<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"fromDPI\" placeholder=\" \" value=\"800\" min=\"1\" inputmode=\"numeric\" aria-label=\"DPI actual\">\n        <label for=\"fromDPI\">DPI de Origen<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"toDPI\" placeholder=\" \" value=\"800\" min=\"1\" inputmode=\"numeric\" aria-label=\"DPI objetivo\">\n        <label for=\"toDPI\">DPI de Destino<\/label>\n      <\/div>\n    <\/div>\n\n    <!-- Notas del juego -->\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    <!-- Resultado -->\n    <div class=\"rc-result-section\">\n      <div class=\"rc-result-main\">\n        <div class=\"rc-result-left\">\n          <span class=\"rc-result-label\">Nueva Sensibilidad<\/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 al portapapeles\">\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            Avanzado\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            Restablecer\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\">pulg\/360&deg;<\/span>\n            <span class=\"rc-adv-pill\" id=\"advInch\">0.00<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Ajustes Pro -->\n    <div class=\"rc-presets-section\">\n      <div class=\"rc-presets-title\">Aplicaci\u00f3n R\u00e1pida: Ajustes Pro<\/div>\n      <div class=\"rc-presets-grid\" id=\"presetsGrid\"><\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 TARJETA DE LA CALCULADORA DE eDPI \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=\"Sensibilidad del juego\">\n        <label for=\"edpiSens\">Sensibilidad<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"edpiDPI\" placeholder=\" \" min=\"1\" inputmode=\"numeric\" aria-label=\"DPI del rat\u00f3n\">\n        <label for=\"edpiDPI\">DPI del Rat\u00f3n<\/label>\n      <\/div>\n      <div class=\"rc-edpi-output\">\n        <div class=\"rc-edpi-label\">Tu 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  <!-- Pie de p\u00e1gina -->\n  <div class=\"rc-footer\">\n    <p>F\u00f3rmulas de conversi\u00f3n basadas en valores de gui\u00f1ada de juego verificados (2024&ndash;2025). Los resultados pueden variar para juegos con curvas de sensibilidad no lineales.<\/p>\n  <\/div>\n\n  <!-- Toast -->\n  <div class=\"rc-toast\" id=\"toast\">\u00a1Copiado al portapapeles!<\/div>\n\n  <!-- Lector de pantalla -->\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\">Convertidor de Sensibilidad del Rat\u00f3n \u2014 Convierte tu Sensibilidad entre 23 Juegos FPS al Instante<\/h2>\n\n\n\n<p>Un convertidor de sensibilidad del rat\u00f3n es una calculadora gratuita basada en navegador que traduce la configuraci\u00f3n de tu rat\u00f3n de un juego a otro utilizando valores de yaw verificados. La memoria muscular es fundamental para una punter\u00eda consistente. Si has pasado cientos de horas dominando tus disparos r\u00e1pidos en <em>Counter-Strike 2<\/em>, no deber\u00edas tener que volver a aprender a apuntar cuando cambies a <em>Valorant<\/em> o <em>Deadlock<\/em>.<\/p>\n\n\n\n<p>Esta herramienta asegura que un giro de 360 grados en tu juego de origen requiera el mismo movimiento f\u00edsico del rat\u00f3n en tu juego objetivo. Utiliza la f\u00f3rmula universal <code>inches_per_360<\/code> para garantizar la precisi\u00f3n matem\u00e1tica en 23 t\u00edtulos importantes 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;\">Resumen<\/h3>\n<p>Conf\u00edas en la memoria muscular para acertar tus disparos. Cuando cambias entre juegos FPS, diferentes motores de juego interpretan tus movimientos del rat\u00f3n de manera diferente. Este art\u00edculo explica c\u00f3mo puedes convertir instant\u00e1neamente tu configuraci\u00f3n de sensibilidad para mantener una distancia de giro de 360 grados consistente en todos tus shooters favoritos. Encontrar\u00e1s matem\u00e1ticas de conversi\u00f3n verificadas para los t\u00edtulos principales de 2026, configuraciones de jugadores profesionales y una explicaci\u00f3n clara de t\u00e9rminos t\u00e9cnicos como eDPI y 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>La consistencia es clave:<\/strong> Debes mantener la misma distancia f\u00edsica del rat\u00f3n (cm\/360) en todos los juegos para preservar la memoria muscular.<\/li>\n<li><strong>Los motores de juego var\u00edan:<\/strong> Una sensibilidad de &#8220;2.0&#8221; en CS2 no es lo mismo que &#8220;2.0&#8221; en Apex Legends u Overwatch debido a diferentes valores de &#8220;yaw&#8221;.<\/li>\n<li><strong>El DPI importa:<\/strong> Puedes usar esta herramienta para ajustar tu sensibilidad incluso si cambias el DPI de tu rat\u00f3n (por ejemplo, de 400 a 1600).<\/li>\n<li><strong>Conoce tu eDPI:<\/strong> Tu verdadera sensibilidad es una combinaci\u00f3n del DPI de tu hardware y la configuraci\u00f3n del juego.<\/li>\n<li><strong>Usa la herramienta:<\/strong> Introduce tu juego actual y la configuraci\u00f3n anterior para obtener tus n\u00fameros exactos para tu nuevo juego al instante.<\/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 Tabla de Contenidos<\/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\">C\u00f3mo Convertir la Sensibilidad de tu Rat\u00f3n en 4 Pasos<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#cs2-converter\">Convertidor de Sensibilidad 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\">Convertidor de Sensibilidad de Valorant<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#overwatch2-converter\">Convertidor de Sensibilidad de Overwatch 2<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#apex-converter\">Convertidor de Sensibilidad de Apex Legends<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#fortnite-converter\">Convertidor de Sensibilidad de Fortnite<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#cod-converter\">Convertidor de Sensibilidad 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\">Otros Shooters 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\">Gu\u00eda T\u00e9cnica: cm\/360 y eDPI<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#pro-settings\">Configuraci\u00f3n de Sensibilidad de Jugadores Profesionales (2025)<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#faq\">Preguntas Frecuentes<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-convert\">C\u00f3mo Convertir la Sensibilidad de tu Rat\u00f3n en 4 Pasos<\/h2>\n\n\n\n<p>Puedes sincronizar tu punter\u00eda en cada juego de tu biblioteca en segundos. Sigue estos cuatro sencillos pasos usando la calculadora de arriba:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Seleccionar Juego de Origen:<\/strong> Elige el juego al que juegas actualmente y con el que te sientes c\u00f3modo del men\u00fa desplegable.<\/li>\n\n\n\n<li><strong>Introducir Configuraci\u00f3n:<\/strong> Introduce tu sensibilidad actual en el juego y el DPI de tu rat\u00f3n (por ejemplo, 800 o 1600).<\/li>\n\n\n\n<li><strong>Seleccionar Juego Objetivo:<\/strong> Elige el nuevo juego al que quieres jugar.<\/li>\n\n\n\n<li><strong>Ver Resultado:<\/strong> La herramienta muestra instant\u00e1neamente tu nueva sensibilidad convertida, eDPI y estad\u00edsticas de cm\/360.<\/li>\n<\/ol>\n\n\n\n<p><strong>Consejo:<\/strong> Usa la funci\u00f3n &#8220;Intercambiar&#8221; si necesitas revertir r\u00e1pidamente el c\u00e1lculo para ver c\u00f3mo se ver\u00edan tus nuevas configuraciones en tu juego original.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cs2-converter\">Convertidor de Sensibilidad de Counter-Strike 2 (CS2)<\/h2>\n\n\n\n<p>CS2 sigue siendo el est\u00e1ndar de oro para el ajuste de sensibilidad debido a la mec\u00e1nica de su antiguo motor Source. La mayor\u00eda de los convertidores usan CS2 como la base &#8220;1.0&#8221; para los c\u00e1lculos. El juego utiliza un valor <code>m_yaw<\/code> predeterminado 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 Profesional (2026):<\/strong> Aunque 400 DPI fue el est\u00e1ndar hist\u00f3rico para Counter-Strike, muchos profesionales de \u00e9lite como m0NESY y NiKo han cambiado a DPIs m\u00e1s altos (800 o 1600) para reducir la latencia de entrada. Ajustan su sensibilidad en el juego a un valor m\u00e1s bajo para compensar, manteniendo su velocidad efectiva igual.<\/div>\n\n\n\n<p>Un rango t\u00edpico de eDPI para jugadores competitivos de CS2 se encuentra entre 560 y 1236. Si te encuentras fuera de este rango, podr\u00edas encontrar tu punter\u00eda inconsistente en comparaci\u00f3n con la base de jugadores promedio.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"valorant-converter\">Convertidor de Sensibilidad de Valorant<\/h2>\n\n\n\n<p>Al convertir de CS2 a Valorant, las matem\u00e1ticas son sencillas. Valorant utiliza un valor de yaw de <strong>0.07<\/strong>. Dado que 0.07 es aproximadamente 3.18 veces mayor que 0.022, simplemente divides tu sensibilidad de CS2 por 3.18 para obtener tu sensibilidad de Valorant.<\/p>\n\n\n\n<p><strong>Consideraciones Clave:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hardware:<\/strong> Los ratones inal\u00e1mbricos ligeros, como el Razer Viper V3 Pro, dominan la escena. Profesionales como TenZ y aspas los prefieren para microajustes.<\/li>\n\n\n\n<li><strong>Campo de Visi\u00f3n (FOV):<\/strong> Valorant tiene un FOV fijo de 103\u00b0.<\/li>\n\n\n\n<li><strong>Miras:<\/strong> Los multiplicadores de sensibilidad con mira son espec\u00edficos aqu\u00ed. La mayor\u00eda de los jugadores los dejan en 1.0, pero algunos los ajustan para lograr una sensaci\u00f3n &#8220;1:1&#8221; en relaci\u00f3n con el disparo sin mira.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"overwatch2-converter\">Convertidor de Sensibilidad de Overwatch 2<\/h2>\n\n\n\n<p>Overwatch 2 es m\u00e1s r\u00e1pido y m\u00e1s vertical que los shooters t\u00e1cticos. El juego utiliza un valor de yaw de <strong>0.0066<\/strong>. Dado que el seguimiento de objetivos que se mueven r\u00e1pidamente (como Tracer o Genji) es esencial, el eDPI promedio es generalmente m\u00e1s alto aqu\u00ed (3000\u20136600) que en CS2 o Valorant.<\/p>\n\n\n\n<p>Tambi\u00e9n debes tener en cuenta que Overwatch permite configuraciones espec\u00edficas por h\u00e9roe. Por ejemplo, los jugadores de Widowmaker y Ana a menudo configuran su &#8220;Sensibilidad de Punter\u00eda Relativa al Acercar la Mira&#8221; en <strong>37.89%<\/strong>. Este n\u00famero espec\u00edfico hace que los peque\u00f1os movimientos r\u00e1pidos mientras se apunta con zoom se sientan id\u00e9nticos a tu punter\u00eda sin mira.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"apex-converter\">Convertidor de Sensibilidad de Apex Legends<\/h2>\n\n\n\n<p>Apex Legends est\u00e1 construido sobre una versi\u00f3n muy modificada del motor Source. Esto es una buena noticia para la conversi\u00f3n: comparte el mismo valor de yaw de <strong>0.022<\/strong> que CS2. Si juegas CS2 con una sensibilidad de 1.5, tu sensibilidad de disparo sin mira en Apex Legends tambi\u00e9n es 1.5.<\/p>\n\n\n\n<p>Aunque la conversi\u00f3n de disparo sin mira es 1:1, debes considerar los multiplicadores de ADS (Apuntar con la Mira). La mayor\u00eda de los jugadores mantienen el multiplicador de ADS en 1.0 para mayor consistencia. Adem\u00e1s, el FOV competitivo est\u00e1ndar en Apex suele estar al m\u00e1ximo en 110, lo que puede hacer que la sensibilidad se &#8220;sienta&#8221; diferente visualmente, incluso si la distancia es f\u00edsicamente la misma.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fortnite-converter\">Convertidor de Sensibilidad de Fortnite<\/h2>\n\n\n\n<p>La conversi\u00f3n de sensibilidad de Fortnite requiere atenci\u00f3n cuidadosa porque el juego utiliza un deslizador basado en porcentajes. Si introduces &#8220;7&#8221; en la configuraci\u00f3n, el motor del juego lo interpreta como 7.0% (o un multiplicador interno de 0.07). El valor t\u00e9cnico de yaw es <strong>0.005555<\/strong>.<\/p>\n\n\n\n<p><strong>Configuraciones a tener en cuenta:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ejes X e Y:<\/strong> Puedes configurar la sensibilidad horizontal (X) y vertical (Y) por separado. La mayor\u00eda de los jugadores competitivos los mantienen bloqueados al mismo n\u00famero para la consistencia de la memoria muscular.<\/li>\n\n\n\n<li><strong>Multiplicador de Punter\u00eda:<\/strong> Esto afecta la velocidad de tu punter\u00eda al mantener presionado el clic derecho.<\/li>\n<\/ul>\n\n\n\n<p>Los profesionales de \u00e9lite como Peterbot o Bugha a menudo prefieren rangos de eDPI brutos entre 40 y 56, favoreciendo la velocidad para las mec\u00e1nicas de construcci\u00f3n sobre la punter\u00eda de precisi\u00f3n pura.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cod-converter\">Convertidor de Sensibilidad de Call of Duty \u2014 Modern Warfare III, Warzone &amp; Black Ops 6<\/h2>\n\n\n\n<p>Los t\u00edtulos recientes de Call of Duty, incluyendo <em>Modern Warfare III<\/em>, <em>Warzone<\/em> y <em>Black Ops 6<\/em>, simplifican las cosas al compartir un est\u00e1ndar de motor unificado. Todos utilizan el valor de yaw de <strong>0.0066<\/strong>, que es id\u00e9ntico al de Overwatch 2.<\/p>\n\n<p>Al configurar tu rat\u00f3n, presta atenci\u00f3n al &#8220;ADS Sensitivity Transition Timing&#8221;. Tambi\u00e9n tienes la opci\u00f3n entre los modos de sensibilidad del rat\u00f3n ADS &#8220;Legacy&#8221; y &#8220;Relative&#8221;. El &#8220;Monitor Distance Coefficient&#8221; (predeterminado 1.33) est\u00e1 dise\u00f1ado para estandarizar tu punter\u00eda en diferentes niveles de zoom, ayud\u00e1ndote a fijar objetivos de manera consistente sin importar la mira que est\u00e9s usando.<\/p>\n<!-- \/wp:post-content -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"other-games\">Otros Shooters 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 utiliza el modelo de &#8220;ganancia visuomotora&#8221; de Ubisoft con un yaw predeterminado de <strong>0.00573<\/strong>. La complejidad aqu\u00ed radica en las miras; tienes deslizadores para 1.0x, 2.5x y m\u00e1s, que van de 1 a 200. Esta herramienta calcula tu hipfire est\u00e1ndar, que act\u00faa como la base para todas las miras.<\/p>\n<\/div>\n<div>\n<h3 style=\"margin-top: 0;\">Battlefield 2042<\/h3>\n<p>Funcionando con el motor Frostbite, Battlefield 2042 utiliza un yaw de <strong>0.0066<\/strong>. Esto coincide con el est\u00e1ndar de CoD. Una punter\u00eda consistente es vital aqu\u00ed para hacer una transici\u00f3n fluida entre la guerra de veh\u00edculos a gran escala y el combate de infanter\u00eda cerrado.<\/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 Sensibilidad de Team Fortress 2 &amp; Quake Champions<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Estos son los abuelos de la punter\u00eda moderna. Ambos juegos funcionan con motores cl\u00e1sicos (Source e id Tech) y utilizan el yaw est\u00e1ndar de <strong>0.022<\/strong>. Esto significa que tienes una conversi\u00f3n directa 1:1 con CS2 y Apex Legends. Si buscas otros <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/steam-games-to-try\">juegos populares de Steam<\/a> para probar tu punter\u00eda pura, estos t\u00edtulos siguen siendo los mejores campos de entrenamiento.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-deadlock-sensitivity-converter\">Conversor de Sensibilidad de Deadlock<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Como el nuevo h\u00edbrido MOBA-shooter de Valve, Deadlock funciona con Source 2. Sin embargo, las matem\u00e1ticas son ligeramente diferentes. Utiliza un yaw de <strong>0.044<\/strong>. Esto es exactamente <strong>2x<\/strong> el yaw de CS2. Si tu sensibilidad en CS2 es 2.0, tu sensibilidad en Deadlock deber\u00eda ajustarse a 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 Sensibilidad de Marvel Rivals<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Construido con Unreal Engine 5, Marvel Rivals utiliza un yaw de <strong>0.0066<\/strong>. Los jugadores que vienen de Overwatch 2 encontrar\u00e1n la escala de sensibilidad id\u00e9ntica (conversi\u00f3n 1:1), haciendo que la transici\u00f3n a este hero shooter sea fluida.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-the-finals-sensitivity-converter\">Conversor de Sensibilidad de The Finals<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>The Finals, un shooter de Unreal Engine 5 de Embark, utiliza un yaw corregido de <strong>0.0066<\/strong>. La sensibilidad competitiva aqu\u00ed suele oscilar entre 14 y 57 a 800 DPI, dependiendo en gran medida de si juegas con la clase r\u00e1pida &#8220;Light&#8221; o la m\u00e1s 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 Sensibilidad de Destiny 2<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Destiny 2 comparte el valor de yaw com\u00fan de <strong>0.0066<\/strong> que se encuentra en CoD y Overwatch. Ten en cuenta que Destiny 2 tiene un l\u00edmite estricto en la velocidad de giro al esprintar. Ning\u00fan aumento de sensibilidad puede anular esta limitaci\u00f3n del 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 Sensibilidad de Halo Infinite<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Halo Infinite utiliza un yaw de <strong>0.022<\/strong>, coincidiendo con CS2 y Apex. Aunque Halo es tradicionalmente dominante en controlador, los jugadores de Rat\u00f3n y Teclado (MnK) conf\u00edan en esta conversi\u00f3n 1:1 para mantener sus habilidades de seguimiento de los shooters t\u00e1cticos.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-pubg-sensitivity-converter\">Conversor de Sensibilidad de PUBG<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>PUBG tiene un yaw de hipfire de <strong>0.002222<\/strong>. El juego cuenta con un sistema por mira muy complejo (General, Veh\u00edculo, 2x, 3x, etc.). Esta herramienta convierte la sensibilidad &#8220;General\/Hipfire&#8221;, que establece la base para todas las dem\u00e1s 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 Sensibilidad de Escape from Tarkov<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Tarkov es \u00fanico. El yaw es aproximadamente <strong>0.125<\/strong>, pero tu velocidad de giro real se ve afectada por tu armadura en el juego, las penalizaciones del casco y la ergonom\u00eda del arma. El conversor proporciona tu sensibilidad <em>base<\/em>, pero tu equipamiento alterar\u00e1 c\u00f3mo se siente el rat\u00f3n en cada incursi\u00f3n.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-rust-sensitivity-converter\">Conversor de Sensibilidad de Rust<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Rust utiliza un yaw de aproximadamente <strong>0.00222<\/strong>. Debido a las frecuentes actualizaciones de Unity, debes tratar estos resultados como un punto de partida para el ajuste fino en lugar de una regla absoluta.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-fragpunk-sensitivity-converter\">Conversor de Sensibilidad de FragPunk<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>FragPunk, uno de los <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/new-games-2025\">nuevos juegos lanzados en 2025<\/a>, tiene un yaw confirmado de <strong>0.0556<\/strong>. Este valor distinto requiere una conversi\u00f3n precisa si vienes de shooters t\u00e1cticos tradicionales.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-splitgate-2-sensitivity-converter\">Conversor de Sensibilidad de Splitgate 2<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Para la secuela del shooter basado en portales, el yaw confirmado es de <strong>0.01116<\/strong>. Esto asegura que tus movimientos r\u00e1pidos de portal sigan siendo precisos.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"technical-guide\">Qu\u00e9 es cm\/360 y por qu\u00e9 es importante para la punter\u00eda<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>cm\/360 (cent\u00edmetros por giro de 360 grados) es el \u00fanico lenguaje universal &#8220;verdadero&#8221; de la sensibilidad. Una configuraci\u00f3n de sensibilidad de &#8220;2.0&#8221; significa algo diferente en cada motor de juego, pero &#8220;34cm\/360&#8221; es la misma distancia f\u00edsica en tu alfombrilla de rat\u00f3n en todas partes.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Al medir la sensibilidad en cent\u00edmetros, eliminas la confusi\u00f3n de los motores de juego. Por ejemplo, un jugador de baja sensibilidad podr\u00eda usar 50cm\/360 (moviendo el rat\u00f3n 50cm para hacer un c\u00edrculo completo), mientras que un jugador de alta sensibilidad podr\u00eda 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\">Entendiendo el eDPI \u2014 Tu N\u00famero de Sensibilidad Real<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>eDPI significa &#8220;effective Dots Per Inch&#8221;. La f\u00f3rmula es simple: <code>eDPI = Sensitivity \u00d7 DPI<\/code>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Este n\u00famero permite a los jugadores con diferentes ratones comparar su velocidad &#8220;verdadera&#8221; en el juego. Por ejemplo, el Jugador A que usa 400 DPI y sensibilidad 2.0 tiene un eDPI de 800. El Jugador B que usa 800 DPI y sensibilidad 1.0 <em>tambi\u00e9n<\/em> tiene un eDPI de 800. Su velocidad de punter\u00eda es id\u00e9ntica.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Sin embargo, el eDPI no es transferible entre diferentes juegos. Un eDPI de 800 en CS2 es muy diferente de un eDPI de 800 en Valorant. Si est\u00e1s <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/build-a-cheap-gaming-pc\">optimizando la configuraci\u00f3n de tu PC gaming<\/a>, decidir un DPI est\u00e1ndar (como 800 o 1600) es el primer paso para una punter\u00eda consistente.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"pro-settings\">Configuraci\u00f3n de Sensibilidad de Jugadores Pro (2025)<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ver lo que usan los profesionales puede darte una buena base. Observa la tendencia hacia 1600 DPI y ratones m\u00e1s ligeros (menos de 60g) en los \u00faltimos a\u00f1os.<\/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;\">Nombre del Jugador<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Juego<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">DPI<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Sensibilidad<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">eDPI<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Rat\u00f3n<\/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\">C\u00f3mo Funciona la F\u00f3rmula de Conversi\u00f3n<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Creemos en la transparencia. La herramienta calcula tus ajustes utilizando la f\u00edsica est\u00e1ndar del movimiento del rat\u00f3n. La f\u00f3rmula principal para encontrar la distancia f\u00edsica de un giro de 360 grados es:<\/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>El conversor invierte esta f\u00f3rmula para tu juego objetivo. Por ejemplo, si conviertes una sensibilidad de CS2 de 2.0 a 400 DPI a Valorant, el c\u00e1lculo se ve as\u00ed: <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\">Preguntas Frecuentes<\/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\">\u00bfC\u00f3mo convierto la sensibilidad de CS2 a Valorant?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Divide tu sensibilidad de CS2 por **3.1818**. Alternativamente, puedes simplemente usar la herramienta de arriba para un c\u00e1lculo instant\u00e1neo y 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\">\u00bfEs cm\/360 lo mismo que eDPI?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>No. eDPI es un n\u00famero digital espec\u00edfico de un motor de juego. cm\/360 es una medida f\u00edsica de la distancia del rat\u00f3n en tu escritorio, que se aplica al 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\">\u00bfFunciona la conversi\u00f3n de sensibilidad para mira\/ADS?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Este conversor calcula tu sensibilidad de disparo desde la cadera (general). La mayor\u00eda de los juegos tienen multiplicadores separados para ADS (Apuntar con la Mira) que se basan en este valor de disparo desde la cadera, por lo que acertar con el disparo desde la cadera es el primer paso.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-can-i-convert-between-different-dpis\">\u00bfPuedo convertir entre diferentes DPIs?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>S\u00ed. Nuestra herramienta te permite introducir un DPI diferente para tu juego objetivo. Ajustar\u00e1 matem\u00e1ticamente la sensibilidad requerida para mantener tu 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":[295],"tags":[],"class_list":["post-38961","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-digital-lifestyle-en-es-mx"],"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>Convertidor de Sensibilidad de Mouse para 23 Juegos 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\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Convertidor de Sensibilidad de Mouse para 23 Juegos 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\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps\" \/>\n<meta property=\"og:site_name\" content=\"Recharge Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-20T13:23:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-21T08:26:20+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\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps\",\"url\":\"https:\/\/www.recharge.com\/blog\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps\",\"name\":\"Convertidor de Sensibilidad de Mouse para 23 Juegos FPS\",\"isPartOf\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/es-mx\/#website\"},\"datePublished\":\"2026-04-20T13:23:36+00:00\",\"dateModified\":\"2026-04-21T08:26:20+00:00\",\"author\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/es-mx\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps#breadcrumb\"},\"inLanguage\":\"es-MX\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.recharge.com\/blog\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.recharge.com\/blog\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.recharge.com\/blog\/es-mx\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Convertidor de Sensibilidad de Mouse para 23 Juegos FPS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.recharge.com\/blog\/es-mx\/#website\",\"url\":\"https:\/\/www.recharge.com\/blog\/es-mx\/\",\"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\/es-mx\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es-MX\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.recharge.com\/blog\/es-mx\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0\",\"name\":\"Mustafa Aybek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-MX\",\"@id\":\"https:\/\/www.recharge.com\/blog\/es-mx\/#\/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\/es-mx\/author\/mustafa-aybek\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Convertidor de Sensibilidad de Mouse para 23 Juegos 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\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps","og_locale":"es_ES","og_type":"article","og_title":"Convertidor de Sensibilidad de Mouse para 23 Juegos 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\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps","og_site_name":"Recharge Blog","article_published_time":"2026-04-20T13:23:36+00:00","article_modified_time":"2026-04-21T08:26:20+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\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps","url":"https:\/\/www.recharge.com\/blog\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps","name":"Convertidor de Sensibilidad de Mouse para 23 Juegos FPS","isPartOf":{"@id":"https:\/\/www.recharge.com\/blog\/es-mx\/#website"},"datePublished":"2026-04-20T13:23:36+00:00","dateModified":"2026-04-21T08:26:20+00:00","author":{"@id":"https:\/\/www.recharge.com\/blog\/es-mx\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0"},"breadcrumb":{"@id":"https:\/\/www.recharge.com\/blog\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps#breadcrumb"},"inLanguage":"es-MX","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.recharge.com\/blog\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.recharge.com\/blog\/es-mx\/mx\/convertidor-de-sensibilidad-de-mouse-para-23-juegos-fps#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.recharge.com\/blog\/es-mx"},{"@type":"ListItem","position":2,"name":"Convertidor de Sensibilidad de Mouse para 23 Juegos FPS"}]},{"@type":"WebSite","@id":"https:\/\/www.recharge.com\/blog\/es-mx\/#website","url":"https:\/\/www.recharge.com\/blog\/es-mx\/","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\/es-mx\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es-MX"},{"@type":"Person","@id":"https:\/\/www.recharge.com\/blog\/es-mx\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0","name":"Mustafa Aybek","image":{"@type":"ImageObject","inLanguage":"es-MX","@id":"https:\/\/www.recharge.com\/blog\/es-mx\/#\/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\/es-mx\/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\/es-mx\/wp-json\/wp\/v2\/posts\/38961","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.recharge.com\/blog\/es-mx\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.recharge.com\/blog\/es-mx\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/es-mx\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/es-mx\/wp-json\/wp\/v2\/comments?post=38961"}],"version-history":[{"count":3,"href":"https:\/\/www.recharge.com\/blog\/es-mx\/wp-json\/wp\/v2\/posts\/38961\/revisions"}],"predecessor-version":[{"id":39146,"href":"https:\/\/www.recharge.com\/blog\/es-mx\/wp-json\/wp\/v2\/posts\/38961\/revisions\/39146"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/es-mx\/wp-json\/wp\/v2\/media\/38381"}],"wp:attachment":[{"href":"https:\/\/www.recharge.com\/blog\/es-mx\/wp-json\/wp\/v2\/media?parent=38961"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/es-mx\/wp-json\/wp\/v2\/categories?post=38961"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/es-mx\/wp-json\/wp\/v2\/tags?post=38961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}