{"id":24737,"date":"2026-08-27T06:33:09","date_gmt":"2026-08-27T06:33:09","guid":{"rendered":"https:\/\/www.mechstream.com\/?p=24737"},"modified":"2026-08-27T06:43:34","modified_gmt":"2026-08-27T06:43:34","slug":"o-ring-compression-ratio-calculator","status":"publish","type":"post","link":"https:\/\/www.mechstream.com\/ar\/o-ring-compression-ratio-calculator\/","title":{"rendered":"O-Ring Compression Ratio Calculator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The <strong>O-Ring Compression Ratio Calculator<\/strong> is a practical engineering tool designed to calculate O-ring squeeze and compression percentage based on seal cross-section and groove dimensions. By entering key parameters such as O-ring diameter, groove depth, groove width, and sealing configuration, users can quickly evaluate compression levels and sealing suitability. The O-Ring Compression Ratio Calculator supports hydraulic, pneumatic, automotive, and industrial seal design while helping engineers reduce leakage, excessive deformation, friction, and premature O-ring failure.<\/p>\n\n\n\n<!-- WordPress Custom HTML Block: copy this entire file content -->\n<style>\n\/* O-Ring Compression Ratio Calculator \u2014 WordPress-safe scoped styles *\/\n\n.entry-content #oring-compression-calculator,\n.wp-block-html #oring-compression-calculator,\n.elementor-widget-container #oring-compression-calculator,\n#oring-compression-calculator {\n    --oc-primary: #1e40af;\n    --oc-primary-light: #3b82f6;\n    --oc-primary-dark: #1e3a8a;\n    --oc-success: #16a34a;\n    --oc-warning: #d97706;\n    --oc-danger: #dc2626;\n    --oc-card-bg: #ffffff;\n    --oc-text: #1e293b;\n    --oc-text-muted: #64748b;\n    --oc-border: #e2e8f0;\n    --oc-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.04);\n    --oc-radius: 10px;\n    --oc-font: 'Segoe UI', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;\n\n    isolation: isolate;\n    font-family: var(--oc-font) !important;\n    font-size: 16px !important;\n    line-height: 1.6 !important;\n    color: var(--oc-text) !important;\n    box-sizing: border-box !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    background: transparent !important;\n    text-align: left !important;\n}\n\n.entry-content #oring-compression-calculator *,\n.entry-content #oring-compression-calculator *::before,\n.entry-content #oring-compression-calculator *::after,\n.wp-block-html #oring-compression-calculator *,\n.wp-block-html #oring-compression-calculator *::before,\n.wp-block-html #oring-compression-calculator *::after,\n#oring-compression-calculator *,\n#oring-compression-calculator *::before,\n#oring-compression-calculator *::after {\n    box-sizing: border-box !important;\n}\n\n.entry-content #oring-compression-calculator section,\n.wp-block-html #oring-compression-calculator section,\n#oring-compression-calculator section {\n    margin: 0 !important;\n    padding: 0 !important;\n    border: none !important;\n    background: transparent !important;\n    box-shadow: none !important;\n    float: none !important;\n    width: auto !important;\n    max-width: none !important;\n}\n\n.entry-content #oring-compression-calculator .oc-container,\n.wp-block-html #oring-compression-calculator .oc-container,\n#oring-compression-calculator .oc-container {\n    max-width: 960px !important;\n    margin: 0 auto !important;\n    padding: 0 !important;\n    width: 100% !important;\n}\n\n.entry-content #oring-compression-calculator .oc-layout,\n.wp-block-html #oring-compression-calculator .oc-layout,\n#oring-compression-calculator .oc-layout {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 1.25rem !important;\n    margin: 0 !important;\n    max-width: 960px !important;\n    width: 100% !important;\n}\n\n.entry-content #oring-compression-calculator .oc-input-grid,\n.wp-block-html #oring-compression-calculator .oc-input-grid,\n#oring-compression-calculator .oc-input-grid {\n    display: grid !important;\n    grid-template-columns: 1fr 1fr !important;\n    gap: 0 1.25rem !important;\n    width: 100% !important;\n}\n\n.entry-content #oring-compression-calculator .oc-input-grid .oc-form-group,\n.wp-block-html #oring-compression-calculator .oc-input-grid .oc-form-group,\n#oring-compression-calculator .oc-input-grid .oc-form-group {\n    margin: 0 0 1rem 0 !important;\n    padding: 0 !important;\n    width: auto !important;\n    float: none !important;\n    clear: none !important;\n}\n\n.entry-content #oring-compression-calculator .oc-input-grid .oc-form-group.oc-full-width,\n.wp-block-html #oring-compression-calculator .oc-input-grid .oc-form-group.oc-full-width,\n#oring-compression-calculator .oc-input-grid .oc-form-group.oc-full-width {\n    grid-column: 1 \/ -1 !important;\n}\n\n@media (max-width: 640px) {\n    .entry-content #oring-compression-calculator .oc-input-grid,\n    .wp-block-html #oring-compression-calculator .oc-input-grid,\n    #oring-compression-calculator .oc-input-grid {\n        grid-template-columns: 1fr !important;\n    }\n}\n\n.entry-content #oring-compression-calculator .oc-input-column,\n.entry-content #oring-compression-calculator .oc-results-column,\n.wp-block-html #oring-compression-calculator .oc-input-column,\n.wp-block-html #oring-compression-calculator .oc-results-column,\n#oring-compression-calculator .oc-input-column,\n#oring-compression-calculator .oc-results-column {\n    width: 100% !important;\n    float: none !important;\n}\n\n.entry-content #oring-compression-calculator .oc-calculate-btn-wrap,\n.wp-block-html #oring-compression-calculator .oc-calculate-btn-wrap,\n#oring-compression-calculator .oc-calculate-btn-wrap {\n    display: flex !important;\n    justify-content: center !important;\n    align-items: center !important;\n    margin-top: 0.5rem !important;\n    width: 100% !important;\n}\n\n.entry-content #oring-compression-calculator .oc-input-section .oc-btn-primary,\n.wp-block-html #oring-compression-calculator .oc-input-section .oc-btn-primary,\n#oring-compression-calculator .oc-input-section .oc-btn-primary {\n    width: 33.333% !important;\n    min-width: 120px !important;\n    max-width: none !important;\n    margin: 0 !important;\n    flex: none !important;\n}\n\n.entry-content #oring-compression-calculator .oc-card,\n.wp-block-html #oring-compression-calculator .oc-card,\n#oring-compression-calculator .oc-card {\n    background: var(--oc-card-bg) !important;\n    border-radius: var(--oc-radius) !important;\n    box-shadow: var(--oc-shadow) !important;\n    padding: 1.5rem !important;\n    margin: 0 0 1.25rem 0 !important;\n    border: 1px solid var(--oc-border) !important;\n    width: 100% !important;\n}\n\n.entry-content #oring-compression-calculator .oc-card h2,\n.wp-block-html #oring-compression-calculator .oc-card h2,\n#oring-compression-calculator .oc-card h2 {\n    font-size: 1.1rem !important;\n    font-weight: 600 !important;\n    color: var(--oc-primary-dark) !important;\n    margin: 0 0 1rem 0 !important;\n    padding: 0 0 0.5rem 0 !important;\n    border: none !important;\n    border-bottom: 2px solid var(--oc-primary-light) !important;\n    line-height: 1.3 !important;\n    background: transparent !important;\n    text-transform: none !important;\n    letter-spacing: normal !important;\n}\n\n.entry-content #oring-compression-calculator .oc-card h3,\n.wp-block-html #oring-compression-calculator .oc-card h3,\n#oring-compression-calculator .oc-card h3 {\n    font-size: 0.95rem !important;\n    font-weight: 600 !important;\n    color: var(--oc-text) !important;\n    margin: 0 0 0.75rem 0 !important;\n    padding: 0 !important;\n    line-height: 1.3 !important;\n    border: none !important;\n    background: transparent !important;\n}\n\n.entry-content #oring-compression-calculator .oc-unit-toggle,\n.wp-block-html #oring-compression-calculator .oc-unit-toggle,\n#oring-compression-calculator .oc-unit-toggle {\n    display: flex !important;\n    flex-wrap: wrap !important;\n    gap: 1rem !important;\n    width: 100% !important;\n}\n\n.entry-content #oring-compression-calculator .oc-radio-label,\n.wp-block-html #oring-compression-calculator .oc-radio-label,\n#oring-compression-calculator .oc-radio-label {\n    display: inline-flex !important;\n    align-items: center !important;\n    gap: 0.5rem !important;\n    cursor: pointer !important;\n    padding: 0.5rem 1rem !important;\n    border: 2px solid var(--oc-border) !important;\n    border-radius: 8px !important;\n    font-size: 0.9rem !important;\n    margin: 0 !important;\n    font-weight: normal !important;\n    background: #fff !important;\n    color: var(--oc-text) !important;\n    width: auto !important;\n    float: none !important;\n}\n\n.entry-content #oring-compression-calculator .oc-radio-label:has(input:checked),\n.wp-block-html #oring-compression-calculator .oc-radio-label:has(input:checked),\n#oring-compression-calculator .oc-radio-label:has(input:checked) {\n    border-color: var(--oc-primary) !important;\n    background: #eff6ff !important;\n    color: var(--oc-primary-dark) !important;\n}\n\n.entry-content #oring-compression-calculator .oc-radio-label input,\n.wp-block-html #oring-compression-calculator .oc-radio-label input,\n#oring-compression-calculator .oc-radio-label input {\n    accent-color: var(--oc-primary) !important;\n    margin: 0 !important;\n    width: auto !important;\n    height: auto !important;\n}\n\n.entry-content #oring-compression-calculator .oc-form-group label,\n.wp-block-html #oring-compression-calculator .oc-form-group label,\n#oring-compression-calculator .oc-form-group label {\n    display: flex !important;\n    align-items: center !important;\n    gap: 0.35rem !important;\n    font-weight: 600 !important;\n    font-size: 0.875rem !important;\n    margin: 0 0 0.4rem 0 !important;\n    padding: 0 !important;\n    color: var(--oc-text) !important;\n    width: auto !important;\n    float: none !important;\n    line-height: 1.4 !important;\n}\n\n.entry-content #oring-compression-calculator .oc-form-group.oc-optional label::after,\n.wp-block-html #oring-compression-calculator .oc-form-group.oc-optional label::after,\n#oring-compression-calculator .oc-form-group.oc-optional label::after {\n    content: ' (optional)' !important;\n    font-weight: normal !important;\n    color: var(--oc-text-muted) !important;\n    font-size: 0.85em !important;\n}\n\n.entry-content #oring-compression-calculator .oc-input-with-unit,\n.wp-block-html #oring-compression-calculator .oc-input-with-unit,\n#oring-compression-calculator .oc-input-with-unit {\n    display: flex !important;\n    align-items: center !important;\n    gap: 0.5rem !important;\n    width: 100% !important;\n}\n\n.entry-content #oring-compression-calculator .oc-input-with-unit input,\n.entry-content #oring-compression-calculator .oc-input-with-unit select,\n.entry-content #oring-compression-calculator .oc-form-group > input[type=\"number\"],\n.wp-block-html #oring-compression-calculator .oc-input-with-unit input,\n.wp-block-html #oring-compression-calculator .oc-input-with-unit select,\n.wp-block-html #oring-compression-calculator .oc-form-group > input[type=\"number\"],\n#oring-compression-calculator .oc-input-with-unit input,\n#oring-compression-calculator .oc-input-with-unit select,\n#oring-compression-calculator .oc-form-group > input[type=\"number\"] {\n    flex: 1 1 0% !important;\n    width: auto !important;\n    min-width: 0 !important;\n    max-width: 100% !important;\n    padding: 0.6rem 0.75rem !important;\n    border: 1.5px solid var(--oc-border) !important;\n    border-radius: 6px !important;\n    font-size: 0.95rem !important;\n    font-family: inherit !important;\n    line-height: normal !important;\n    background: #fff !important;\n    color: var(--oc-text) !important;\n    margin: 0 !important;\n    height: auto !important;\n    min-height: 0 !important;\n    box-shadow: none !important;\n    appearance: auto !important;\n    -webkit-appearance: auto !important;\n    display: block !important;\n    float: none !important;\n}\n\n.entry-content #oring-compression-calculator .oc-input-with-unit input:focus,\n.entry-content #oring-compression-calculator .oc-input-with-unit select:focus,\n.entry-content #oring-compression-calculator .oc-form-group > input:focus,\n.wp-block-html #oring-compression-calculator .oc-input-with-unit input:focus,\n.wp-block-html #oring-compression-calculator .oc-input-with-unit select:focus,\n.wp-block-html #oring-compression-calculator .oc-form-group > input:focus,\n#oring-compression-calculator .oc-input-with-unit input:focus,\n#oring-compression-calculator .oc-input-with-unit select:focus,\n#oring-compression-calculator .oc-form-group > input:focus {\n    outline: none !important;\n    border-color: var(--oc-primary-light) !important;\n    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15) !important;\n}\n\n.entry-content #oring-compression-calculator .oc-input-with-unit input.oc-error,\n.wp-block-html #oring-compression-calculator .oc-input-with-unit input.oc-error,\n#oring-compression-calculator .oc-input-with-unit input.oc-error {\n    border-color: var(--oc-danger) !important;\n}\n\n.entry-content #oring-compression-calculator .oc-unit-label,\n.wp-block-html #oring-compression-calculator .oc-unit-label,\n#oring-compression-calculator .oc-unit-label {\n    min-width: 3rem !important;\n    flex: 0 0 3rem !important;\n    font-size: 0.85rem !important;\n    color: var(--oc-text-muted) !important;\n    font-weight: 500 !important;\n    text-align: left !important;\n    margin: 0 !important;\n    padding: 0 !important;\n}\n\n.entry-content #oring-compression-calculator .oc-unit-spacer,\n.wp-block-html #oring-compression-calculator .oc-unit-spacer,\n#oring-compression-calculator .oc-unit-spacer {\n    visibility: hidden !important;\n}\n\n.entry-content #oring-compression-calculator .oc-error-msg,\n.wp-block-html #oring-compression-calculator .oc-error-msg,\n#oring-compression-calculator .oc-error-msg {\n    display: block !important;\n    color: var(--oc-danger) !important;\n    font-size: 0.8rem !important;\n    margin-top: 0.25rem !important;\n}\n\n.entry-content #oring-compression-calculator .oc-hidden,\n.wp-block-html #oring-compression-calculator .oc-hidden,\n#oring-compression-calculator .oc-hidden {\n    display: none !important;\n}\n\n.entry-content #oring-compression-calculator .oc-tooltip,\n.wp-block-html #oring-compression-calculator .oc-tooltip,\n#oring-compression-calculator .oc-tooltip {\n    display: inline-flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    width: 16px !important;\n    height: 16px !important;\n    border-radius: 50% !important;\n    background: var(--oc-text-muted) !important;\n    color: #fff !important;\n    font-size: 0.65rem !important;\n    font-weight: 700 !important;\n    cursor: help !important;\n    position: relative !important;\n    flex-shrink: 0 !important;\n}\n\n.entry-content #oring-compression-calculator .oc-tooltip::after,\n.wp-block-html #oring-compression-calculator .oc-tooltip::after,\n#oring-compression-calculator .oc-tooltip::after {\n    content: attr(data-tip) !important;\n    position: absolute !important;\n    bottom: calc(100% + 6px) !important;\n    left: 50% !important;\n    transform: translateX(-50%) !important;\n    background: var(--oc-text) !important;\n    color: #fff !important;\n    padding: 0.5rem 0.75rem !important;\n    border-radius: 6px !important;\n    font-size: 0.75rem !important;\n    font-weight: 400 !important;\n    white-space: normal !important;\n    width: max-content !important;\n    max-width: 220px !important;\n    opacity: 0 !important;\n    visibility: hidden !important;\n    transition: opacity 0.2s !important;\n    z-index: 100 !important;\n    pointer-events: none !important;\n    line-height: 1.4 !important;\n}\n\n.entry-content #oring-compression-calculator .oc-tooltip:hover::after,\n.wp-block-html #oring-compression-calculator .oc-tooltip:hover::after,\n#oring-compression-calculator .oc-tooltip:hover::after {\n    opacity: 1 !important;\n    visibility: visible !important;\n}\n\n.entry-content #oring-compression-calculator .oc-btn,\n.wp-block-html #oring-compression-calculator .oc-btn,\n#oring-compression-calculator .oc-btn {\n    display: inline-block !important;\n    padding: 0.75rem 1.5rem !important;\n    border: none !important;\n    border-radius: 8px !important;\n    font-size: 0.95rem !important;\n    font-weight: 600 !important;\n    font-family: inherit !important;\n    line-height: normal !important;\n    cursor: pointer !important;\n    transition: all 0.2s !important;\n    text-align: center !important;\n    text-decoration: none !important;\n    box-shadow: none !important;\n    float: none !important;\n    text-transform: none !important;\n    letter-spacing: normal !important;\n}\n\n.entry-content #oring-compression-calculator .oc-btn-primary,\n.wp-block-html #oring-compression-calculator .oc-btn-primary,\n#oring-compression-calculator .oc-btn-primary {\n    background: var(--oc-primary) !important;\n    color: #fff !important;\n}\n\n.entry-content #oring-compression-calculator .oc-btn-primary:hover,\n.wp-block-html #oring-compression-calculator .oc-btn-primary:hover,\n#oring-compression-calculator .oc-btn-primary:hover {\n    background: var(--oc-primary-dark) !important;\n    color: #fff !important;\n    transform: translateY(-1px) !important;\n    box-shadow: 0 4px 12px rgba(30, 64, 175, 0.3) !important;\n}\n\n.entry-content #oring-compression-calculator .oc-status-banner,\n.wp-block-html #oring-compression-calculator .oc-status-banner,\n#oring-compression-calculator .oc-status-banner {\n    display: flex !important;\n    align-items: center !important;\n    gap: 1rem !important;\n    padding: 1rem 1.25rem !important;\n    border-radius: 8px !important;\n    margin-bottom: 1.25rem !important;\n    background: #f1f5f9 !important;\n    border: none !important;\n    border-left: 4px solid var(--oc-text-muted) !important;\n}\n\n.entry-content #oring-compression-calculator .oc-status-banner.oc-status-low,\n.wp-block-html #oring-compression-calculator .oc-status-banner.oc-status-low,\n#oring-compression-calculator .oc-status-banner.oc-status-low {\n    background: #fef3c7 !important;\n    border-left-color: var(--oc-warning) !important;\n}\n\n.entry-content #oring-compression-calculator .oc-status-banner.oc-status-recommended,\n.wp-block-html #oring-compression-calculator .oc-status-banner.oc-status-recommended,\n#oring-compression-calculator .oc-status-banner.oc-status-recommended {\n    background: #dcfce7 !important;\n    border-left-color: var(--oc-success) !important;\n}\n\n.entry-content #oring-compression-calculator .oc-status-banner.oc-status-high,\n.wp-block-html #oring-compression-calculator .oc-status-banner.oc-status-high,\n#oring-compression-calculator .oc-status-banner.oc-status-high {\n    background: #fee2e2 !important;\n    border-left-color: var(--oc-danger) !important;\n}\n\n.entry-content #oring-compression-calculator .oc-status-icon,\n.wp-block-html #oring-compression-calculator .oc-status-icon,\n#oring-compression-calculator .oc-status-icon {\n    font-size: 1.75rem !important;\n    line-height: 1 !important;\n    font-weight: 700 !important;\n    min-width: 1.75rem !important;\n    text-align: center !important;\n}\n\n.entry-content #oring-compression-calculator .oc-status-banner strong,\n.wp-block-html #oring-compression-calculator .oc-status-banner strong,\n#oring-compression-calculator .oc-status-banner strong {\n    display: block !important;\n    font-size: 1rem !important;\n    font-weight: 600 !important;\n    color: var(--oc-text) !important;\n}\n\n.entry-content #oring-compression-calculator .oc-status-banner p,\n.wp-block-html #oring-compression-calculator .oc-status-banner p,\n#oring-compression-calculator .oc-status-banner p {\n    font-size: 0.85rem !important;\n    color: var(--oc-text-muted) !important;\n    margin: 0.15rem 0 0 0 !important;\n    padding: 0 !important;\n}\n\n.entry-content #oring-compression-calculator .oc-results-grid,\n.wp-block-html #oring-compression-calculator .oc-results-grid,\n#oring-compression-calculator .oc-results-grid {\n    display: grid !important;\n    grid-template-columns: repeat(2, 1fr) !important;\n    gap: 0.75rem !important;\n    width: 100% !important;\n}\n\n@media (max-width: 520px) {\n    .entry-content #oring-compression-calculator .oc-results-grid,\n    .wp-block-html #oring-compression-calculator .oc-results-grid,\n    #oring-compression-calculator .oc-results-grid {\n        grid-template-columns: 1fr !important;\n    }\n}\n\n.entry-content #oring-compression-calculator .oc-result-item,\n.wp-block-html #oring-compression-calculator .oc-result-item,\n#oring-compression-calculator .oc-result-item {\n    padding: 0.85rem 1rem !important;\n    background: #f8fafc !important;\n    border-radius: 8px !important;\n    border: 1px solid var(--oc-border) !important;\n    margin: 0 !important;\n}\n\n.entry-content #oring-compression-calculator .oc-result-item.oc-highlight,\n.wp-block-html #oring-compression-calculator .oc-result-item.oc-highlight,\n#oring-compression-calculator .oc-result-item.oc-highlight {\n    grid-column: 1 \/ -1 !important;\n    background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%) !important;\n    border-color: var(--oc-primary-light) !important;\n}\n\n.entry-content #oring-compression-calculator .oc-result-label,\n.wp-block-html #oring-compression-calculator .oc-result-label,\n#oring-compression-calculator .oc-result-label {\n    display: block !important;\n    font-size: 0.78rem !important;\n    color: var(--oc-text-muted) !important;\n    text-transform: uppercase !important;\n    letter-spacing: 0.03em !important;\n    margin-bottom: 0.25rem !important;\n}\n\n.entry-content #oring-compression-calculator .oc-result-value,\n.wp-block-html #oring-compression-calculator .oc-result-value,\n#oring-compression-calculator .oc-result-value {\n    display: block !important;\n    font-size: 1.25rem !important;\n    font-weight: 700 !important;\n    color: var(--oc-primary-dark) !important;\n    font-variant-numeric: tabular-nums !important;\n}\n\n.entry-content #oring-compression-calculator .oc-result-item.oc-highlight .oc-result-value,\n.wp-block-html #oring-compression-calculator .oc-result-item.oc-highlight .oc-result-value,\n#oring-compression-calculator .oc-result-item.oc-highlight .oc-result-value {\n    font-size: 1.75rem !important;\n}\n\n.entry-content #oring-compression-calculator .oc-recommendation-box,\n.wp-block-html #oring-compression-calculator .oc-recommendation-box,\n#oring-compression-calculator .oc-recommendation-box {\n    margin-top: 1.25rem !important;\n    padding: 1rem 1.25rem !important;\n    background: #f0f9ff !important;\n    border-radius: 8px !important;\n    border: 1px solid #bae6fd !important;\n}\n\n.entry-content #oring-compression-calculator .oc-recommendation-box p,\n.wp-block-html #oring-compression-calculator .oc-recommendation-box p,\n#oring-compression-calculator .oc-recommendation-box p {\n    font-size: 0.9rem !important;\n    color: var(--oc-text) !important;\n    margin: 0 !important;\n    padding: 0 !important;\n}\n\n.entry-content #oring-compression-calculator .oc-warnings-box,\n.wp-block-html #oring-compression-calculator .oc-warnings-box,\n#oring-compression-calculator .oc-warnings-box {\n    margin-top: 1rem !important;\n    padding: 1rem 1.25rem !important;\n    background: #fef2f2 !important;\n    border-radius: 8px !important;\n    border: 1px solid #fecaca !important;\n}\n\n.entry-content #oring-compression-calculator .oc-warnings-box h3,\n.wp-block-html #oring-compression-calculator .oc-warnings-box h3,\n#oring-compression-calculator .oc-warnings-box h3 {\n    color: var(--oc-danger) !important;\n}\n\n.entry-content #oring-compression-calculator .oc-warnings-box ul,\n.wp-block-html #oring-compression-calculator .oc-warnings-box ul,\n#oring-compression-calculator .oc-warnings-box ul {\n    padding-left: 1.25rem !important;\n    font-size: 0.875rem !important;\n    margin: 0 !important;\n    list-style: disc !important;\n}\n\n.entry-content #oring-compression-calculator .oc-warnings-box li,\n.wp-block-html #oring-compression-calculator .oc-warnings-box li,\n#oring-compression-calculator .oc-warnings-box li {\n    margin-bottom: 0.35rem !important;\n}\n<\/style>\n\n    <div id=\"oring-compression-calculator\">\n        <div class=\"oc-container\">\n            <div class=\"oc-layout\">\n                <div class=\"oc-input-column\">\n                    <section class=\"oc-card oc-input-section\">\n                        <h2>Input Parameters<\/h2>\n\n                        <div class=\"oc-input-grid\">\n                            <div class=\"oc-form-group oc-full-width\">\n                                <label>Unit System<\/label>\n                                <div class=\"oc-unit-toggle\">\n                                    <label class=\"oc-radio-label\">\n                                        <input type=\"radio\" name=\"oc-unitSystem\" value=\"metric\" checked>\n                                        <span>Metric (mm, MPa, &deg;C)<\/span>\n                                    <\/label>\n                                    <label class=\"oc-radio-label\">\n                                        <input type=\"radio\" name=\"oc-unitSystem\" value=\"imperial\">\n                                        <span>Imperial (inch, psi, &deg;F)<\/span>\n                                    <\/label>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"oc-form-group\">\n                                <label for=\"oc-sealType\">\n                                    Seal Type\n                                    <span class=\"oc-tooltip\" data-tip=\"Select the sealing arrangement: radial (piston\/rod), axial (face seal), or dynamic motion type.\">?<\/span>\n                                <\/label>\n                                <div class=\"oc-input-with-unit\">\n                                    <select id=\"oc-sealType\">\n                                        <option value=\"static-radial\" selected>Static Radial Seal<\/option>\n                                        <option value=\"static-axial\">Static Axial Seal<\/option>\n                                        <option value=\"reciprocating\">Reciprocating Dynamic Seal<\/option>\n                                        <option value=\"rotary\">Rotary Dynamic Seal<\/option>\n                                        <option value=\"custom\">Custom Application<\/option>\n                                    <\/select>\n                                    <span class=\"oc-unit-label oc-unit-spacer\" aria-hidden=\"true\"><\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"oc-form-group\">\n                                <label for=\"oc-crossSection\">\n                                    O-Ring Cross-Section Diameter\n                                    <span class=\"oc-tooltip\" data-tip=\"Nominal O-ring cord diameter (d). Standard AS568 sizes: 1.78, 2.62, 3.53, 5.33 mm.\">?<\/span>\n                                <\/label>\n                                <div class=\"oc-input-with-unit\">\n                                    <input type=\"number\" id=\"oc-crossSection\" value=\"3.53\" step=\"any\" min=\"0.001\">\n                                    <span class=\"oc-unit-label\" data-unit=\"length\">mm<\/span>\n                                <\/div>\n                                <span class=\"oc-error-msg\" id=\"oc-crossSectionError\"><\/span>\n                            <\/div>\n\n                            <div class=\"oc-form-group oc-optional\">\n                                <label for=\"oc-oringID\">\n                                    O-Ring Inside Diameter\n                                    <span class=\"oc-tooltip\" data-tip=\"Original O-ring ID for stretch calculation.\">?<\/span>\n                                <\/label>\n                                <div class=\"oc-input-with-unit\">\n                                    <input type=\"number\" id=\"oc-oringID\" placeholder=\"Optional\" step=\"any\" min=\"0.001\">\n                                    <span class=\"oc-unit-label\" data-unit=\"length\">mm<\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"oc-form-group\">\n                                <label for=\"oc-grooveDepth\">\n                                    Groove Depth\n                                    <span class=\"oc-tooltip\" data-tip=\"Installed groove depth or available sealing gap (H). Determines compression: S = d - H.\">?<\/span>\n                                <\/label>\n                                <div class=\"oc-input-with-unit\">\n                                    <input type=\"number\" id=\"oc-grooveDepth\" value=\"2.85\" step=\"any\" min=\"0.001\">\n                                    <span class=\"oc-unit-label\" data-unit=\"length\">mm<\/span>\n                                <\/div>\n                                <span class=\"oc-error-msg\" id=\"oc-grooveDepthError\"><\/span>\n                            <\/div>\n\n                            <div class=\"oc-form-group oc-optional\">\n                                <label for=\"oc-grooveWidth\">\n                                    Groove Width\n                                    <span class=\"oc-tooltip\" data-tip=\"Groove width for gland fill calculation.\">?<\/span>\n                                <\/label>\n                                <div class=\"oc-input-with-unit\">\n                                    <input type=\"number\" id=\"oc-grooveWidth\" value=\"4.8\" step=\"any\" min=\"0.001\">\n                                    <span class=\"oc-unit-label\" data-unit=\"length\">mm<\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"oc-form-group oc-optional\">\n                                <label for=\"oc-radialClearance\">\n                                    Radial Clearance\n                                    <span class=\"oc-tooltip\" data-tip=\"Extrusion gap between piston\/rod and bore. Used for extrusion risk evaluation.\">?<\/span>\n                                <\/label>\n                                <div class=\"oc-input-with-unit\">\n                                    <input type=\"number\" id=\"oc-radialClearance\" placeholder=\"Optional\" step=\"any\" min=\"0\">\n                                    <span class=\"oc-unit-label\" data-unit=\"length\">mm<\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"oc-form-group oc-optional\">\n                                <label for=\"oc-grooveDiameter\">\n                                    Groove Diameter\n                                    <span class=\"oc-tooltip\" data-tip=\"Installation groove diameter for ID stretch estimation.\">?<\/span>\n                                <\/label>\n                                <div class=\"oc-input-with-unit\">\n                                    <input type=\"number\" id=\"oc-grooveDiameter\" placeholder=\"Optional\" step=\"any\" min=\"0.001\">\n                                    <span class=\"oc-unit-label\" data-unit=\"length\">mm<\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"oc-form-group\">\n                                <label for=\"oc-material\">Material<\/label>\n                                <div class=\"oc-input-with-unit\">\n                                    <select id=\"oc-material\">\n                                        <option value=\"NBR\" selected>NBR (Nitrile)<\/option>\n                                        <option value=\"FKM\">FKM (Viton)<\/option>\n                                        <option value=\"EPDM\">EPDM<\/option>\n                                        <option value=\"Silicone\">Silicone<\/option>\n                                        <option value=\"HNBR\">HNBR<\/option>\n                                        <option value=\"PTFE\">PTFE Encapsulated<\/option>\n                                        <option value=\"Custom\">Custom<\/option>\n                                    <\/select>\n                                    <span class=\"oc-unit-label oc-unit-spacer\" aria-hidden=\"true\"><\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"oc-form-group\">\n                                <label for=\"oc-hardness\">Hardness<\/label>\n                                <div class=\"oc-input-with-unit\">\n                                    <select id=\"oc-hardness\">\n                                        <option value=\"50\">50 Shore A<\/option>\n                                        <option value=\"60\">60 Shore A<\/option>\n                                        <option value=\"70\" selected>70 Shore A<\/option>\n                                        <option value=\"80\">80 Shore A<\/option>\n                                        <option value=\"90\">90 Shore A<\/option>\n                                        <option value=\"custom\">Custom<\/option>\n                                    <\/select>\n                                    <span class=\"oc-unit-label oc-unit-spacer\" aria-hidden=\"true\"><\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"oc-form-group oc-hidden\" id=\"oc-customHardnessGroup\">\n                                <label for=\"oc-customHardness\">Custom Hardness (Shore A)<\/label>\n                                <input type=\"number\" id=\"oc-customHardness\" min=\"30\" max=\"95\" step=\"1\" placeholder=\"30-95\">\n                            <\/div>\n\n                            <div class=\"oc-form-group oc-optional\">\n                                <label for=\"oc-pressure\">\n                                    Operating Pressure\n                                    <span class=\"oc-tooltip\" data-tip=\"System operating pressure for extrusion risk assessment.\">?<\/span>\n                                <\/label>\n                                <div class=\"oc-input-with-unit\">\n                                    <input type=\"number\" id=\"oc-pressure\" value=\"10\" step=\"any\" min=\"0\">\n                                    <span class=\"oc-unit-label\" data-unit=\"pressure\">MPa<\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"oc-form-group oc-optional\">\n                                <label for=\"oc-temperature\">\n                                    Operating Temperature\n                                    <span class=\"oc-tooltip\" data-tip=\"Operating temperature for material compatibility reference.\">?<\/span>\n                                <\/label>\n                                <div class=\"oc-input-with-unit\">\n                                    <input type=\"number\" id=\"oc-temperature\" value=\"60\" step=\"any\">\n                                    <span class=\"oc-unit-label\" data-unit=\"temperature\">&deg;C<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"oc-calculate-btn-wrap\">\n                            <button type=\"button\" id=\"oc-calculateBtn\" class=\"oc-btn oc-btn-primary\">Calculate<\/button>\n                        <\/div>\n                    <\/section>\n                <\/div>\n\n                <div class=\"oc-results-column\">\n                    <section class=\"oc-card oc-results-section oc-hidden\" id=\"oc-resultsSection\">\n                        <h2>Calculation Results<\/h2>\n                        <div class=\"oc-status-banner\" id=\"oc-statusBanner\">\n                            <span class=\"oc-status-icon\" id=\"oc-statusIcon\">&#8211;<\/span>\n                            <div>\n                                <strong id=\"oc-compressionStatus\">Enter values and calculate<\/strong>\n                                <p id=\"oc-sealRiskLevel\">&#8211;<\/p>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"oc-results-grid\">\n                            <div class=\"oc-result-item oc-highlight\">\n                                <span class=\"oc-result-label\">O-Ring Compression Ratio<\/span>\n                                <span class=\"oc-result-value\" id=\"oc-resultCompressionRatio\">&#8211;<\/span>\n                            <\/div>\n                            <div class=\"oc-result-item\">\n                                <span class=\"oc-result-label\">Compression Amount (S)<\/span>\n                                <span class=\"oc-result-value\" id=\"oc-resultCompressionAmount\">&#8211;<\/span>\n                            <\/div>\n                            <div class=\"oc-result-item\">\n                                <span class=\"oc-result-label\">Installed O-Ring Height<\/span>\n                                <span class=\"oc-result-value\" id=\"oc-resultInstalledHeight\">&#8211;<\/span>\n                            <\/div>\n                            <div class=\"oc-result-item\">\n                                <span class=\"oc-result-label\">Remaining Cross-Section<\/span>\n                                <span class=\"oc-result-value\" id=\"oc-resultRemainingHeight\">&#8211;<\/span>\n                            <\/div>\n                            <div class=\"oc-result-item\">\n                                <span class=\"oc-result-label\">O-Ring Stretch<\/span>\n                                <span class=\"oc-result-value\" id=\"oc-resultStretch\">&#8211;<\/span>\n                            <\/div>\n                            <div class=\"oc-result-item\">\n                                <span class=\"oc-result-label\">Gland Fill<\/span>\n                                <span class=\"oc-result-value\" id=\"oc-resultGlandFill\">&#8211;<\/span>\n                            <\/div>\n                            <div class=\"oc-result-item\">\n                                <span class=\"oc-result-label\">Recommended Compression Range<\/span>\n                                <span class=\"oc-result-value\" id=\"oc-resultRecommendedRange\">&#8211;<\/span>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"oc-recommendation-box\" id=\"oc-recommendationBox\">\n                            <h3>Engineering Recommendation<\/h3>\n                            <p id=\"oc-engineeringRecommendation\">Adjust inputs and click Calculate to see design guidance.<\/p>\n                        <\/div>\n\n                        <div class=\"oc-warnings-box\" id=\"oc-warningsBox\" style=\"display:none;\">\n                            <h3>Warnings<\/h3>\n                            <ul id=\"oc-warningsList\"><\/ul>\n                        <\/div>\n                    <\/section>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n<script>\n(function () {\n    var root = document.getElementById('oring-compression-calculator');\n    if (!root) return;\n    var code = atob('LyoqDQogKiBPLVJpbmcgQ29tcHJlc3Npb24gUmF0aW8gQ2FsY3VsYXRvcg0KICogU2NvcGVkIGZvciBXb3JkUHJlc3MgZW1iZWQgLSBhbGwgcXVlcmllcyBsaW1pdGVkIHRvICNvcmluZy1jb21wcmVzc2lvbi1jYWxjdWxhdG9yDQogKi8NCg0KKGZ1bmN0aW9uICgpIHsNCiAgICAndXNlIHN0cmljdCc7DQoNCiAgICBjb25zdCBST09UX0lEID0gJ29yaW5nLWNvbXByZXNzaW9uLWNhbGN1bGF0b3InOw0KICAgIGNvbnN0IE1NX1RPX0lOQ0ggPSAxIC8gMjUuNDsNCiAgICBjb25zdCBJTkNIX1RPX01NID0gMjUuNDsNCiAgICBjb25zdCBNUEFfVE9fUFNJID0gMTQ1LjAzODsNCiAgICBjb25zdCBQU0lfVE9fTVBBID0gMSAvIE1QQV9UT19QU0k7DQoNCiAgICBjb25zdCBDT01QUkVTU0lPTl9SQU5HRVMgPSB7DQogICAgICAgICdzdGF0aWMtcmFkaWFsJzogeyBtaW46IDE1LCBtYXg6IDMwLCBsYWJlbDogJ1N0YXRpYyBSYWRpYWwnIH0sDQogICAgICAgICdzdGF0aWMtYXhpYWwnOiB7IG1pbjogMTUsIG1heDogMjUsIGxhYmVsOiAnU3RhdGljIEF4aWFsJyB9LA0KICAgICAgICAncmVjaXByb2NhdGluZyc6IHsgbWluOiAxMCwgbWF4OiAyMCwgbGFiZWw6ICdSZWNpcHJvY2F0aW5nJyB9LA0KICAgICAgICAncm90YXJ5JzogeyBtaW46IDgsIG1heDogMTYsIGxhYmVsOiAnUm90YXJ5JyB9LA0KICAgICAgICAnY3VzdG9tJzogeyBtaW46IDEwLCBtYXg6IDMwLCBsYWJlbDogJ0N1c3RvbScgfQ0KICAgIH07DQoNCiAgICBjb25zdCBNQVRFUklBTF9BREpVU1RNRU5UUyA9IHsNCiAgICAgICAgTkJSOiAwLA0KICAgICAgICBGS006IDAsDQogICAgICAgIEVQRE06IDEsDQogICAgICAgIFNpbGljb25lOiAyLA0KICAgICAgICBITkJSOiAtMSwNCiAgICAgICAgUFRGRTogLTIsDQogICAgICAgIEN1c3RvbTogMA0KICAgIH07DQoNCiAgICBsZXQgcm9vdCA9IG51bGw7DQogICAgbGV0IHVuaXRTeXN0ZW0gPSAnbWV0cmljJzsNCiAgICBsZXQgbGFzdFZhbGlkUmVzdWx0cyA9IG51bGw7DQogICAgbGV0IGVscyA9IHt9Ow0KDQogICAgZnVuY3Rpb24gJChpZCkgew0KICAgICAgICByZXR1cm4gcm9vdC5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBiaW5kRWxlbWVudHMoKSB7DQogICAgICAgIGVscyA9IHsNCiAgICAgICAgICAgIHVuaXRSYWRpb3M6IHJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0ib2MtdW5pdFN5c3RlbSJdJyksDQogICAgICAgICAgICBzZWFsVHlwZTogJCgnb2Mtc2VhbFR5cGUnKSwNCiAgICAgICAgICAgIGNyb3NzU2VjdGlvbjogJCgnb2MtY3Jvc3NTZWN0aW9uJyksDQogICAgICAgICAgICBncm9vdmVEZXB0aDogJCgnb2MtZ3Jvb3ZlRGVwdGgnKSwNCiAgICAgICAgICAgIGdyb292ZVdpZHRoOiAkKCdvYy1ncm9vdmVXaWR0aCcpLA0KICAgICAgICAgICAgcmFkaWFsQ2xlYXJhbmNlOiAkKCdvYy1yYWRpYWxDbGVhcmFuY2UnKSwNCiAgICAgICAgICAgIG9yaW5nSUQ6ICQoJ29jLW9yaW5nSUQnKSwNCiAgICAgICAgICAgIGdyb292ZURpYW1ldGVyOiAkKCdvYy1ncm9vdmVEaWFtZXRlcicpLA0KICAgICAgICAgICAgbWF0ZXJpYWw6ICQoJ29jLW1hdGVyaWFsJyksDQogICAgICAgICAgICBoYXJkbmVzczogJCgnb2MtaGFyZG5lc3MnKSwNCiAgICAgICAgICAgIGN1c3RvbUhhcmRuZXNzOiAkKCdvYy1jdXN0b21IYXJkbmVzcycpLA0KICAgICAgICAgICAgY3VzdG9tSGFyZG5lc3NHcm91cDogJCgnb2MtY3VzdG9tSGFyZG5lc3NHcm91cCcpLA0KICAgICAgICAgICAgcHJlc3N1cmU6ICQoJ29jLXByZXNzdXJlJyksDQogICAgICAgICAgICB0ZW1wZXJhdHVyZTogJCgnb2MtdGVtcGVyYXR1cmUnKSwNCiAgICAgICAgICAgIGNhbGN1bGF0ZUJ0bjogJCgnb2MtY2FsY3VsYXRlQnRuJyksDQogICAgICAgICAgICByZXN1bHRzU2VjdGlvbjogJCgnb2MtcmVzdWx0c1NlY3Rpb24nKSwNCiAgICAgICAgICAgIGNyb3NzU2VjdGlvbkVycm9yOiAkKCdvYy1jcm9zc1NlY3Rpb25FcnJvcicpLA0KICAgICAgICAgICAgZ3Jvb3ZlRGVwdGhFcnJvcjogJCgnb2MtZ3Jvb3ZlRGVwdGhFcnJvcicpLA0KICAgICAgICAgICAgcmVzdWx0Q29tcHJlc3Npb25SYXRpbzogJCgnb2MtcmVzdWx0Q29tcHJlc3Npb25SYXRpbycpLA0KICAgICAgICAgICAgcmVzdWx0Q29tcHJlc3Npb25BbW91bnQ6ICQoJ29jLXJlc3VsdENvbXByZXNzaW9uQW1vdW50JyksDQogICAgICAgICAgICByZXN1bHRJbnN0YWxsZWRIZWlnaHQ6ICQoJ29jLXJlc3VsdEluc3RhbGxlZEhlaWdodCcpLA0KICAgICAgICAgICAgcmVzdWx0UmVtYWluaW5nSGVpZ2h0OiAkKCdvYy1yZXN1bHRSZW1haW5pbmdIZWlnaHQnKSwNCiAgICAgICAgICAgIHJlc3VsdFN0cmV0Y2g6ICQoJ29jLXJlc3VsdFN0cmV0Y2gnKSwNCiAgICAgICAgICAgIHJlc3VsdEdsYW5kRmlsbDogJCgnb2MtcmVzdWx0R2xhbmRGaWxsJyksDQogICAgICAgICAgICByZXN1bHRSZWNvbW1lbmRlZFJhbmdlOiAkKCdvYy1yZXN1bHRSZWNvbW1lbmRlZFJhbmdlJyksDQogICAgICAgICAgICBjb21wcmVzc2lvblN0YXR1czogJCgnb2MtY29tcHJlc3Npb25TdGF0dXMnKSwNCiAgICAgICAgICAgIHNlYWxSaXNrTGV2ZWw6ICQoJ29jLXNlYWxSaXNrTGV2ZWwnKSwNCiAgICAgICAgICAgIHN0YXR1c0Jhbm5lcjogJCgnb2Mtc3RhdHVzQmFubmVyJyksDQogICAgICAgICAgICBzdGF0dXNJY29uOiAkKCdvYy1zdGF0dXNJY29uJyksDQogICAgICAgICAgICBlbmdpbmVlcmluZ1JlY29tbWVuZGF0aW9uOiAkKCdvYy1lbmdpbmVlcmluZ1JlY29tbWVuZGF0aW9uJyksDQogICAgICAgICAgICB3YXJuaW5nc0JveDogJCgnb2Mtd2FybmluZ3NCb3gnKSwNCiAgICAgICAgICAgIHdhcm5pbmdzTGlzdDogJCgnb2Mtd2FybmluZ3NMaXN0JykNCiAgICAgICAgfTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBnZXRMZW5ndGhVbml0KCkgew0KICAgICAgICByZXR1cm4gdW5pdFN5c3RlbSA9PT0gJ21ldHJpYycgPyAnbW0nIDogJ2luJzsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBnZXRQcmVzc3VyZVVuaXQoKSB7DQogICAgICAgIHJldHVybiB1bml0U3lzdGVtID09PSAnbWV0cmljJyA\/ICdNUGEnIDogJ3BzaSc7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZ2V0VGVtcFVuaXQoKSB7DQogICAgICAgIHJldHVybiB1bml0U3lzdGVtID09PSAnbWV0cmljJyA\/ICdcdTAwQjBDJyA6ICdcdTAwQjBGJzsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB1cGRhdGVVbml0TGFiZWxzKCkgew0KICAgICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXVuaXQ9Imxlbmd0aCJdJykuZm9yRWFjaChlbCA9PiB7DQogICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9IGdldExlbmd0aFVuaXQoKTsNCiAgICAgICAgfSk7DQogICAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdW5pdD0icHJlc3N1cmUiXScpLmZvckVhY2goZWwgPT4gew0KICAgICAgICAgICAgZWwudGV4dENvbnRlbnQgPSBnZXRQcmVzc3VyZVVuaXQoKTsNCiAgICAgICAgfSk7DQogICAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdW5pdD0idGVtcGVyYXR1cmUiXScpLmZvckVhY2goZWwgPT4gew0KICAgICAgICAgICAgZWwudGV4dENvbnRlbnQgPSBnZXRUZW1wVW5pdCgpOw0KICAgICAgICB9KTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBwYXJzZU51bSh2YWx1ZSkgew0KICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBudWxsOw0KICAgICAgICBjb25zdCBuID0gcGFyc2VGbG9hdCh2YWx1ZSk7DQogICAgICAgIHJldHVybiBpc05hTihuKSA\/IG51bGwgOiBuOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRvTWV0cmljTGVuZ3RoKHZhbHVlKSB7DQogICAgICAgIHJldHVybiB1bml0U3lzdGVtID09PSAnbWV0cmljJyA\/IHZhbHVlIDogdmFsdWUgKiBJTkNIX1RPX01NOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGZyb21NZXRyaWNMZW5ndGgodmFsdWUpIHsNCiAgICAgICAgcmV0dXJuIHVuaXRTeXN0ZW0gPT09ICdtZXRyaWMnID8gdmFsdWUgOiB2YWx1ZSAqIE1NX1RPX0lOQ0g7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gdG9NZXRyaWNQcmVzc3VyZSh2YWx1ZSkgew0KICAgICAgICByZXR1cm4gdW5pdFN5c3RlbSA9PT0gJ21ldHJpYycgPyB2YWx1ZSA6IHZhbHVlICogUFNJX1RPX01QQTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBmb3JtYXRMZW5ndGgodmFsdWVNbSkgew0KICAgICAgICBjb25zdCB2ID0gZnJvbU1ldHJpY0xlbmd0aCh2YWx1ZU1tKTsNCiAgICAgICAgY29uc3QgZGVjaW1hbHMgPSB1bml0U3lzdGVtID09PSAnbWV0cmljJyA\/IDMgOiA0Ow0KICAgICAgICByZXR1cm4gdi50b0ZpeGVkKGRlY2ltYWxzKSArICcgJyArIGdldExlbmd0aFVuaXQoKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBmb3JtYXRQZXJjZW50KHZhbHVlKSB7DQogICAgICAgIHJldHVybiB2YWx1ZS50b0ZpeGVkKDEpICsgJyUnOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGdldEhhcmRuZXNzKCkgew0KICAgICAgICBpZiAoZWxzLmhhcmRuZXNzLnZhbHVlID09PSAnY3VzdG9tJykgew0KICAgICAgICAgICAgcmV0dXJuIHBhcnNlTnVtKGVscy5jdXN0b21IYXJkbmVzcy52YWx1ZSkgfHwgNzA7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHBhcnNlSW50KGVscy5oYXJkbmVzcy52YWx1ZSwgMTApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGdldFJlY29tbWVuZGVkUmFuZ2Uoc2VhbFR5cGUsIG1hdGVyaWFsKSB7DQogICAgICAgIGNvbnN0IGJhc2UgPSBDT01QUkVTU0lPTl9SQU5HRVNbc2VhbFR5cGVdIHx8IENPTVBSRVNTSU9OX1JBTkdFU1snc3RhdGljLXJhZGlhbCddOw0KICAgICAgICBjb25zdCBhZGogPSBNQVRFUklBTF9BREpVU1RNRU5UU1ttYXRlcmlhbF0gfHwgMDsNCiAgICAgICAgbGV0IG1pbiA9IE1hdGgubWF4KDUsIGJhc2UubWluICsgYWRqKTsNCiAgICAgICAgbGV0IG1heCA9IE1hdGgubWluKDQ1LCBiYXNlLm1heCArIGFkaik7DQoNCiAgICAgICAgY29uc3QgaGFyZG5lc3MgPSBnZXRIYXJkbmVzcygpOw0KICAgICAgICBpZiAoaGFyZG5lc3MgPj0gODApIHsNCiAgICAgICAgICAgIG1pbiArPSAxOw0KICAgICAgICAgICAgbWF4ICs9IDI7DQogICAgICAgIH0gZWxzZSBpZiAoaGFyZG5lc3MgPD0gNjApIHsNCiAgICAgICAgICAgIG1pbiAtPSAxOw0KICAgICAgICAgICAgbWF4IC09IDE7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4geyBtaW4sIG1heCwgbGFiZWw6IGJhc2UubGFiZWwgfTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0cygpIHsNCiAgICAgICAgY29uc3Qgd2FybmluZ3MgPSBbXTsNCiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTsNCg0KICAgICAgICBlbHMuY3Jvc3NTZWN0aW9uRXJyb3IudGV4dENvbnRlbnQgPSAnJzsNCiAgICAgICAgZWxzLmdyb292ZURlcHRoRXJyb3IudGV4dENvbnRlbnQgPSAnJzsNCiAgICAgICAgZWxzLmNyb3NzU2VjdGlvbi5jbGFzc0xpc3QucmVtb3ZlKCdvYy1lcnJvcicpOw0KICAgICAgICBlbHMuZ3Jvb3ZlRGVwdGguY2xhc3NMaXN0LnJlbW92ZSgnb2MtZXJyb3InKTsNCg0KICAgICAgICBjb25zdCBkID0gcGFyc2VOdW0oZWxzLmNyb3NzU2VjdGlvbi52YWx1ZSk7DQogICAgICAgIGNvbnN0IEggPSBwYXJzZU51bShlbHMuZ3Jvb3ZlRGVwdGgudmFsdWUpOw0KDQogICAgICAgIGlmIChkID09PSBudWxsIHx8IGQgPD0gMCkgew0KICAgICAgICAgICAgZWxzLmNyb3NzU2VjdGlvbkVycm9yLnRleHRDb250ZW50ID0gJ0Nyb3NzLXNlY3Rpb24gbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nOw0KICAgICAgICAgICAgZWxzLmNyb3NzU2VjdGlvbi5jbGFzc0xpc3QuYWRkKCdvYy1lcnJvcicpOw0KICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChIID09PSBudWxsIHx8IEggPD0gMCkgew0KICAgICAgICAgICAgZWxzLmdyb292ZURlcHRoRXJyb3IudGV4dENvbnRlbnQgPSAnR3Jvb3ZlIGRlcHRoIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uJzsNCiAgICAgICAgICAgIGVscy5ncm9vdmVEZXB0aC5jbGFzc0xpc3QuYWRkKCdvYy1lcnJvcicpOw0KICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICh2YWxpZCAmJiBkICE9PSBudWxsICYmIEggIT09IG51bGwpIHsNCiAgICAgICAgICAgIGNvbnN0IGRNbSA9IHRvTWV0cmljTGVuZ3RoKGQpOw0KICAgICAgICAgICAgY29uc3QgSE1tID0gdG9NZXRyaWNMZW5ndGgoSCk7DQoNCiAgICAgICAgICAgIGlmIChITW0gPj0gZE1tKSB7DQogICAgICAgICAgICAgICAgZWxzLmdyb292ZURlcHRoRXJyb3IudGV4dENvbnRlbnQgPSAnR3Jvb3ZlIGRlcHRoIG11c3QgYmUgbGVzcyB0aGFuIE8tcmluZyBjcm9zcy1zZWN0aW9uIGZvciBwb3NpdGl2ZSBjb21wcmVzc2lvbi4nOw0KICAgICAgICAgICAgICAgIGVscy5ncm9vdmVEZXB0aC5jbGFzc0xpc3QuYWRkKCdvYy1lcnJvcicpOw0KICAgICAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goJ0dyb292ZSBkZXB0aCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gTy1yaW5nIGNyb3NzLXNlY3Rpb24gLSBjb21wcmVzc2lvbiBpcyB6ZXJvIG9yIG5lZ2F0aXZlLicpOw0KICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdCBndyA9IHBhcnNlTnVtKGVscy5ncm9vdmVXaWR0aC52YWx1ZSk7DQogICAgICAgIGlmIChndyAhPT0gbnVsbCAmJiBndyA8PSAwKSB7DQogICAgICAgICAgICB3YXJuaW5ncy5wdXNoKCdHcm9vdmUgd2lkdGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IHJjID0gcGFyc2VOdW0oZWxzLnJhZGlhbENsZWFyYW5jZS52YWx1ZSk7DQogICAgICAgIGlmIChyYyAhPT0gbnVsbCAmJiByYyA8IDApIHsNCiAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goJ1JhZGlhbCBjbGVhcmFuY2UgY2Fubm90IGJlIG5lZ2F0aXZlLicpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHsgdmFsaWQsIHdhcm5pbmdzIH07DQogICAgfQ0KDQogICAgZnVuY3Rpb24gc2hvd1Jlc3VsdHMoKSB7DQogICAgICAgIGVscy5yZXN1bHRzU2VjdGlvbi5jbGFzc0xpc3QucmVtb3ZlKCdvYy1oaWRkZW4nKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBoaWRlUmVzdWx0cygpIHsNCiAgICAgICAgZWxzLnJlc3VsdHNTZWN0aW9uLmNsYXNzTGlzdC5hZGQoJ29jLWhpZGRlbicpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZSgpIHsNCiAgICAgICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlSW5wdXRzKCk7DQogICAgICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkgew0KICAgICAgICAgICAgaGlkZVJlc3VsdHMoKTsNCiAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uLndhcm5pbmdzLmxlbmd0aCkgc2hvd1dhcm5pbmdzKHZhbGlkYXRpb24ud2FybmluZ3MpOw0KICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdCBkID0gdG9NZXRyaWNMZW5ndGgocGFyc2VOdW0oZWxzLmNyb3NzU2VjdGlvbi52YWx1ZSkpOw0KICAgICAgICBjb25zdCBIID0gdG9NZXRyaWNMZW5ndGgocGFyc2VOdW0oZWxzLmdyb292ZURlcHRoLnZhbHVlKSk7DQogICAgICAgIGNvbnN0IHNlYWxUeXBlID0gZWxzLnNlYWxUeXBlLnZhbHVlOw0KICAgICAgICBjb25zdCBtYXRlcmlhbCA9IGVscy5tYXRlcmlhbC52YWx1ZTsNCg0KICAgICAgICBjb25zdCBTID0gZCAtIEg7DQogICAgICAgIGNvbnN0IGNvbXByZXNzaW9uUmF0aW8gPSAoUyAvIGQpICogMTAwOw0KICAgICAgICBjb25zdCBpbnN0YWxsZWRIZWlnaHQgPSBIOw0KICAgICAgICBjb25zdCByZW1haW5pbmdIZWlnaHQgPSBkIC0gUzsNCg0KICAgICAgICBsZXQgc3RyZXRjaCA9IG51bGw7DQogICAgICAgIGNvbnN0IG9yaW5nSUQgPSBwYXJzZU51bShlbHMub3JpbmdJRC52YWx1ZSk7DQogICAgICAgIGNvbnN0IGdyb292ZURpYSA9IHBhcnNlTnVtKGVscy5ncm9vdmVEaWFtZXRlci52YWx1ZSk7DQogICAgICAgIGlmIChvcmluZ0lEICE9PSBudWxsICYmIG9yaW5nSUQgPiAwICYmIGdyb292ZURpYSAhPT0gbnVsbCAmJiBncm9vdmVEaWEgPiAwKSB7DQogICAgICAgICAgICBjb25zdCBpZE1tID0gdG9NZXRyaWNMZW5ndGgob3JpbmdJRCk7DQogICAgICAgICAgICBjb25zdCBncm9vdmVNbSA9IHRvTWV0cmljTGVuZ3RoKGdyb292ZURpYSk7DQogICAgICAgICAgICBzdHJldGNoID0gKChncm9vdmVNbSAtIGlkTW0pIC8gaWRNbSkgKiAxMDA7DQogICAgICAgIH0NCg0KICAgICAgICBsZXQgZ2xhbmRGaWxsID0gbnVsbDsNCiAgICAgICAgY29uc3QgZ3Jvb3ZlV2lkdGggPSBwYXJzZU51bShlbHMuZ3Jvb3ZlV2lkdGgudmFsdWUpOw0KICAgICAgICBpZiAoZ3Jvb3ZlV2lkdGggIT09IG51bGwgJiYgZ3Jvb3ZlV2lkdGggPiAwKSB7DQogICAgICAgICAgICBjb25zdCB3TW0gPSB0b01ldHJpY0xlbmd0aChncm9vdmVXaWR0aCk7DQogICAgICAgICAgICBjb25zdCBBb3JpbmcgPSBNYXRoLlBJICogZCAqIGQgLyA0Ow0KICAgICAgICAgICAgbGV0IEFvcmluZ0NvcnJlY3RlZCA9IEFvcmluZzsNCiAgICAgICAgICAgIGlmIChzdHJldGNoICE9PSBudWxsICYmIHN0cmV0Y2ggPiAwKSB7DQogICAgICAgICAgICAgICAgQW9yaW5nQ29ycmVjdGVkID0gQW9yaW5nICogKDEgKyBzdHJldGNoIC8gMTAwKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNvbnN0IEFncm9vdmUgPSB3TW0gKiBIOw0KICAgICAgICAgICAgaWYgKEFncm9vdmUgPiAwKSB7DQogICAgICAgICAgICAgICAgZ2xhbmRGaWxsID0gKEFvcmluZ0NvcnJlY3RlZCAvIEFncm9vdmUpICogMTAwOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgY29uc3QgcmFuZ2UgPSBnZXRSZWNvbW1lbmRlZFJhbmdlKHNlYWxUeXBlLCBtYXRlcmlhbCk7DQogICAgICAgIGxldCBjb21wcmVzc2lvblN0YXR1cywgc3RhdHVzQ2xhc3M7DQoNCiAgICAgICAgaWYgKGNvbXByZXNzaW9uUmF0aW8gPCByYW5nZS5taW4pIHsNCiAgICAgICAgICAgIGNvbXByZXNzaW9uU3RhdHVzID0gJ0xvdyBDb21wcmVzc2lvbic7DQogICAgICAgICAgICBzdGF0dXNDbGFzcyA9ICdvYy1zdGF0dXMtbG93JzsNCiAgICAgICAgfSBlbHNlIGlmIChjb21wcmVzc2lvblJhdGlvID4gcmFuZ2UubWF4KSB7DQogICAgICAgICAgICBjb21wcmVzc2lvblN0YXR1cyA9ICdIaWdoIENvbXByZXNzaW9uJzsNCiAgICAgICAgICAgIHN0YXR1c0NsYXNzID0gJ29jLXN0YXR1cy1oaWdoJzsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGNvbXByZXNzaW9uU3RhdHVzID0gJ1JlY29tbWVuZGVkIFJhbmdlJzsNCiAgICAgICAgICAgIHN0YXR1c0NsYXNzID0gJ29jLXN0YXR1cy1yZWNvbW1lbmRlZCc7DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdCB3YXJuaW5ncyA9IFsuLi52YWxpZGF0aW9uLndhcm5pbmdzXTsNCiAgICAgICAgbGV0IHNlYWxSaXNrID0gJ0xvdyBSaXNrJzsNCiAgICAgICAgbGV0IHJpc2tTY29yZSA9IDA7DQoNCiAgICAgICAgaWYgKGNvbXByZXNzaW9uUmF0aW8gPCByYW5nZS5taW4gLSA1KSB7DQogICAgICAgICAgICByaXNrU2NvcmUgKz0gMjsNCiAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goJ0NvbXByZXNzaW9uIGlzIHNpZ25pZmljYW50bHkgYmVsb3cgcmVjb21tZW5kZWQgcmFuZ2UgLSBwb3RlbnRpYWwgbGVha2FnZSByaXNrLicpOw0KICAgICAgICB9IGVsc2UgaWYgKGNvbXByZXNzaW9uUmF0aW8gPCByYW5nZS5taW4pIHsNCiAgICAgICAgICAgIHJpc2tTY29yZSArPSAxOw0KICAgICAgICAgICAgd2FybmluZ3MucHVzaCgnQ29tcHJlc3Npb24gaXMgYmVsb3cgcmVjb21tZW5kZWQgcmFuZ2UgLSB2ZXJpZnkgc2VhbGluZyBjb250YWN0LicpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGNvbXByZXNzaW9uUmF0aW8gPiByYW5nZS5tYXggKyAxMCkgew0KICAgICAgICAgICAgcmlza1Njb3JlICs9IDM7DQogICAgICAgICAgICB3YXJuaW5ncy5wdXNoKCdDb21wcmVzc2lvbiBleGNlZWRzIHByYWN0aWNhbCBkZXNpZ24gcmFuZ2UgLSBoaWdoIHJpc2sgb2Ygc2VhbCBkYW1hZ2UuJyk7DQogICAgICAgIH0gZWxzZSBpZiAoY29tcHJlc3Npb25SYXRpbyA+IHJhbmdlLm1heCArIDUpIHsNCiAgICAgICAgICAgIHJpc2tTY29yZSArPSAyOw0KICAgICAgICAgICAgd2FybmluZ3MucHVzaCgnQ29tcHJlc3Npb24gaXMgZXhjZXNzaXZlIC0gaW5jcmVhc2VkIGZyaWN0aW9uIGFuZCBkZWZvcm1hdGlvbiByaXNrLicpOw0KICAgICAgICB9IGVsc2UgaWYgKGNvbXByZXNzaW9uUmF0aW8gPiByYW5nZS5tYXgpIHsNCiAgICAgICAgICAgIHJpc2tTY29yZSArPSAxOw0KICAgICAgICAgICAgd2FybmluZ3MucHVzaCgnQ29tcHJlc3Npb24gaXMgYWJvdmUgcmVjb21tZW5kZWQgcmFuZ2UuJyk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoc3RyZXRjaCAhPT0gbnVsbCkgew0KICAgICAgICAgICAgY29uc3QgbWF4U3RyZXRjaCA9IHNlYWxUeXBlID09PSAncm90YXJ5JyA\/IDMgOiA1Ow0KICAgICAgICAgICAgaWYgKHN0cmV0Y2ggPiBtYXhTdHJldGNoICsgMykgew0KICAgICAgICAgICAgICAgIHJpc2tTY29yZSArPSAyOw0KICAgICAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goYE8tcmluZyBzdHJldGNoICgke3N0cmV0Y2gudG9GaXhlZCgxKX0lKSBpcyBleGNlc3NpdmUgLSByZWNvbW1lbmRlZCBtYXggfiR7bWF4U3RyZXRjaH0lLmApOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJldGNoID4gbWF4U3RyZXRjaCkgew0KICAgICAgICAgICAgICAgIHJpc2tTY29yZSArPSAxOw0KICAgICAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goYE8tcmluZyBzdHJldGNoICgke3N0cmV0Y2gudG9GaXhlZCgxKX0lKSBleGNlZWRzIHR5cGljYWwgcmVjb21tZW5kZWQgcmFuZ2UuYCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoc3RyZXRjaCA8IC0yKSB7DQogICAgICAgICAgICAgICAgd2FybmluZ3MucHVzaCgnTmVnYXRpdmUgc3RyZXRjaCBpbmRpY2F0ZXMgTy1yaW5nIGlzIGJlaW5nIGNvbXByZXNzZWQgcmFkaWFsbHkgLSB2ZXJpZnkgZ3Jvb3ZlIGRpYW1ldGVyLicpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGdsYW5kRmlsbCAhPT0gbnVsbCkgew0KICAgICAgICAgICAgaWYgKGdsYW5kRmlsbCA+IDkwKSB7DQogICAgICAgICAgICAgICAgcmlza1Njb3JlICs9IDI7DQogICAgICAgICAgICAgICAgd2FybmluZ3MucHVzaCgnR2xhbmQgZmlsbCBleGNlZWRzIDkwJSAtIGluc3VmZmljaWVudCBzcGFjZSBmb3IgTy1yaW5nIGV4cGFuc2lvbi4nKTsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2xhbmRGaWxsID4gNzUpIHsNCiAgICAgICAgICAgICAgICByaXNrU2NvcmUgKz0gMTsNCiAgICAgICAgICAgICAgICB3YXJuaW5ncy5wdXNoKCdHbGFuZCBmaWxsIGlzIGhpZ2ggKD43NSUpIC0gY29uc2lkZXIgaW5jcmVhc2luZyBncm9vdmUgd2lkdGguJyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdCBwcmVzc3VyZSA9IHBhcnNlTnVtKGVscy5wcmVzc3VyZS52YWx1ZSk7DQogICAgICAgIGNvbnN0IHJhZGlhbENsZWFyYW5jZSA9IHBhcnNlTnVtKGVscy5yYWRpYWxDbGVhcmFuY2UudmFsdWUpOw0KICAgICAgICBpZiAocHJlc3N1cmUgIT09IG51bGwgJiYgcHJlc3N1cmUgPiAwICYmIHJhZGlhbENsZWFyYW5jZSAhPT0gbnVsbCAmJiByYWRpYWxDbGVhcmFuY2UgPj0gMCkgew0KICAgICAgICAgICAgY29uc3QgcHJlc3N1cmVNcGEgPSB0b01ldHJpY1ByZXNzdXJlKHByZXNzdXJlKTsNCiAgICAgICAgICAgIGNvbnN0IGNsZWFyYW5jZU1tID0gdG9NZXRyaWNMZW5ndGgocmFkaWFsQ2xlYXJhbmNlKTsNCiAgICAgICAgICAgIGNvbnN0IGNsZWFyYW5jZVJhdGlvID0gY2xlYXJhbmNlTW0gLyBkOw0KDQogICAgICAgICAgICBpZiAocHJlc3N1cmVNcGEgPiAxNSAmJiBjbGVhcmFuY2VSYXRpbyA+IDAuMDgpIHsNCiAgICAgICAgICAgICAgICByaXNrU2NvcmUgKz0gMzsNCiAgICAgICAgICAgICAgICB3YXJuaW5ncy5wdXNoKCdIaWdoIHByZXNzdXJlIGNvbWJpbmVkIHdpdGggZXhjZXNzaXZlIGV4dHJ1c2lvbiBjbGVhcmFuY2UgLSBjb25zaWRlciBiYWNrdXAgcmluZ3Mgb3IgaGFyZGVyIG1hdGVyaWFsLicpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChwcmVzc3VyZU1wYSA+IDEwICYmIGNsZWFyYW5jZVJhdGlvID4gMC4wNSkgew0KICAgICAgICAgICAgICAgIHJpc2tTY29yZSArPSAyOw0KICAgICAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goJ0VsZXZhdGVkIGV4dHJ1c2lvbiByaXNrIGF0IGN1cnJlbnQgcHJlc3N1cmUgYW5kIGNsZWFyYW5jZSAtIGV2YWx1YXRlIGJhY2t1cCByaW5nIHVzZS4nKTsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJlc3N1cmVNcGEgPiA1ICYmIGNsZWFyYW5jZVJhdGlvID4gMC4wMykgew0KICAgICAgICAgICAgICAgIHJpc2tTY29yZSArPSAxOw0KICAgICAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goJ01vZGVyYXRlIGV4dHJ1c2lvbiByaXNrIC0gdmVyaWZ5IGNsZWFyYW5jZSBhZ2FpbnN0IG1hbnVmYWN0dXJlciBndWlkZWxpbmVzLicpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKHJpc2tTY29yZSA+PSA0KSBzZWFsUmlzayA9ICdIaWdoIFJpc2snOw0KICAgICAgICBlbHNlIGlmIChyaXNrU2NvcmUgPj0gMikgc2VhbFJpc2sgPSAnQ2F1dGlvbic7DQoNCiAgICAgICAgY29uc3QgcmVjb21tZW5kYXRpb24gPSBnZW5lcmF0ZVJlY29tbWVuZGF0aW9uKHsNCiAgICAgICAgICAgIGNvbXByZXNzaW9uU3RhdHVzLA0KICAgICAgICAgICAgcmFuZ2UsDQogICAgICAgICAgICBzdHJldGNoLA0KICAgICAgICAgICAgZ2xhbmRGaWxsLA0KICAgICAgICAgICAgc2VhbFJpc2ssDQogICAgICAgICAgICBwcmVzc3VyZTogcHJlc3N1cmUgIT09IG51bGwgPyB0b01ldHJpY1ByZXNzdXJlKHByZXNzdXJlKSA6IG51bGwNCiAgICAgICAgfSk7DQoNCiAgICAgICAgY29uc3QgcmVzdWx0cyA9IHsNCiAgICAgICAgICAgIFMsIGNvbXByZXNzaW9uUmF0aW8sIGluc3RhbGxlZEhlaWdodCwgcmVtYWluaW5nSGVpZ2h0LA0KICAgICAgICAgICAgc3RyZXRjaCwgZ2xhbmRGaWxsLCByYW5nZSwgY29tcHJlc3Npb25TdGF0dXMsIHN0YXR1c0NsYXNzLA0KICAgICAgICAgICAgc2VhbFJpc2ssIHJlY29tbWVuZGF0aW9uLCB3YXJuaW5ncw0KICAgICAgICB9Ow0KDQogICAgICAgIGxhc3RWYWxpZFJlc3VsdHMgPSByZXN1bHRzOw0KICAgICAgICBkaXNwbGF5UmVzdWx0cyhyZXN1bHRzKTsNCiAgICAgICAgc2hvd1Jlc3VsdHMoKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdHM7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZ2VuZXJhdGVSZWNvbW1lbmRhdGlvbihkYXRhKSB7DQogICAgICAgIGNvbnN0IHBhcnRzID0gW107DQoNCiAgICAgICAgaWYgKGRhdGEuY29tcHJlc3Npb25TdGF0dXMgPT09ICdMb3cgQ29tcHJlc3Npb24nKSB7DQogICAgICAgICAgICBwYXJ0cy5wdXNoKCdSZWR1Y2UgZ3Jvb3ZlIGRlcHRoIHRvIGluY3JlYXNlIHNxdWVlemUgYW5kIGltcHJvdmUgc2VhbGluZyBjb250YWN0LicpOw0KICAgICAgICB9IGVsc2UgaWYgKGRhdGEuY29tcHJlc3Npb25TdGF0dXMgPT09ICdIaWdoIENvbXByZXNzaW9uJykgew0KICAgICAgICAgICAgcGFydHMucHVzaCgnSW5jcmVhc2UgZ3Jvb3ZlIGRlcHRoIHRvIHJlZHVjZSBleGNlc3NpdmUgc3F1ZWV6ZSwgZnJpY3Rpb24sIGFuZCBkZWZvcm1hdGlvbiByaXNrLicpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcGFydHMucHVzaCgnQ29tcHJlc3Npb24gaXMgd2l0aGluIHRoZSByZWNvbW1lbmRlZCByYW5nZSBmb3IgJyArIGRhdGEucmFuZ2UubGFiZWwgKyAnIHNlYWxpbmcuJyk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZGF0YS5zdHJldGNoICE9PSBudWxsICYmIGRhdGEuc3RyZXRjaCA+IDUpIHsNCiAgICAgICAgICAgIHBhcnRzLnB1c2goJ1JlZHVjZSBPLXJpbmcgc3RyZXRjaCBieSBzZWxlY3RpbmcgYSBsYXJnZXIgSUQgb3IgYWRqdXN0aW5nIGdyb292ZSBkaWFtZXRlci4nKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChkYXRhLmdsYW5kRmlsbCAhPT0gbnVsbCAmJiBkYXRhLmdsYW5kRmlsbCA+IDc1KSB7DQogICAgICAgICAgICBwYXJ0cy5wdXNoKCdJbmNyZWFzZSBncm9vdmUgd2lkdGggdG8gcmVkdWNlIGdsYW5kIGZpbGwgYW5kIGFsbG93IHByb3BlciBPLXJpbmcgZXhwYW5zaW9uLicpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGRhdGEuc2VhbFJpc2sgPT09ICdIaWdoIFJpc2snIHx8IGRhdGEuc2VhbFJpc2sgPT09ICdDYXV0aW9uJykgew0KICAgICAgICAgICAgaWYgKGRhdGEucHJlc3N1cmUgIT09IG51bGwgJiYgZGF0YS5wcmVzc3VyZSA+IDEwKSB7DQogICAgICAgICAgICAgICAgcGFydHMucHVzaCgnRm9yIGhpZ2gtcHJlc3N1cmUgYXBwbGljYXRpb25zLCBjb25zaWRlciBhIGhhcmRlciBPLXJpbmcgKDgwLTkwIFNob3JlIEEpIG9yIGJhY2t1cCByaW5ncy4nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHBhcnRzLnB1c2goJ1ZlcmlmeSBPLXJpbmcgbWF0ZXJpYWwgY29tcGF0aWJpbGl0eSB3aXRoIGZsdWlkIGFuZCBvcGVyYXRpbmcgdGVtcGVyYXR1cmUuJyk7DQogICAgICAgIH0NCg0KICAgICAgICBwYXJ0cy5wdXNoKCdDb25maXJtIGZpbmFsIGdyb292ZSBkaW1lbnNpb25zIHVzaW5nIG1hbnVmYWN0dXJlciBkZXNpZ24gdGFibGVzIGFuZCBhcHBsaWNhYmxlIHN0YW5kYXJkcy4nKTsNCg0KICAgICAgICByZXR1cm4gcGFydHMuam9pbignICcpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGRpc3BsYXlSZXN1bHRzKHIpIHsNCiAgICAgICAgZWxzLnJlc3VsdENvbXByZXNzaW9uUmF0aW8udGV4dENvbnRlbnQgPSBmb3JtYXRQZXJjZW50KHIuY29tcHJlc3Npb25SYXRpbyk7DQogICAgICAgIGVscy5yZXN1bHRDb21wcmVzc2lvbkFtb3VudC50ZXh0Q29udGVudCA9IGZvcm1hdExlbmd0aChyLlMpOw0KICAgICAgICBlbHMucmVzdWx0SW5zdGFsbGVkSGVpZ2h0LnRleHRDb250ZW50ID0gZm9ybWF0TGVuZ3RoKHIuaW5zdGFsbGVkSGVpZ2h0KTsNCiAgICAgICAgZWxzLnJlc3VsdFJlbWFpbmluZ0hlaWdodC50ZXh0Q29udGVudCA9IGZvcm1hdExlbmd0aChyLnJlbWFpbmluZ0hlaWdodCk7DQogICAgICAgIGVscy5yZXN1bHRTdHJldGNoLnRleHRDb250ZW50ID0gci5zdHJldGNoICE9PSBudWxsID8gZm9ybWF0UGVyY2VudChyLnN0cmV0Y2gpIDogJ04vQSAoZW50ZXIgSUQgJiBncm9vdmUgZGlhbWV0ZXIpJzsNCiAgICAgICAgZWxzLnJlc3VsdEdsYW5kRmlsbC50ZXh0Q29udGVudCA9IHIuZ2xhbmRGaWxsICE9PSBudWxsID8gZm9ybWF0UGVyY2VudChyLmdsYW5kRmlsbCkgOiAnTi9BIChlbnRlciBncm9vdmUgd2lkdGgpJzsNCiAgICAgICAgZWxzLnJlc3VsdFJlY29tbWVuZGVkUmFuZ2UudGV4dENvbnRlbnQgPSBmb3JtYXRQZXJjZW50KHIucmFuZ2UubWluKSArICcgLSAnICsgZm9ybWF0UGVyY2VudChyLnJhbmdlLm1heCk7DQoNCiAgICAgICAgZWxzLmNvbXByZXNzaW9uU3RhdHVzLnRleHRDb250ZW50ID0gci5jb21wcmVzc2lvblN0YXR1czsNCiAgICAgICAgZWxzLnNlYWxSaXNrTGV2ZWwudGV4dENvbnRlbnQgPSAnU2VhbCBSaXNrIExldmVsOiAnICsgci5zZWFsUmlzazsNCg0KICAgICAgICBlbHMuc3RhdHVzQmFubmVyLmNsYXNzTmFtZSA9ICdvYy1zdGF0dXMtYmFubmVyICcgKyByLnN0YXR1c0NsYXNzOw0KICAgICAgICBjb25zdCBpY29ucyA9IHsNCiAgICAgICAgICAgICdvYy1zdGF0dXMtbG93JzogJyEnLA0KICAgICAgICAgICAgJ29jLXN0YXR1cy1yZWNvbW1lbmRlZCc6ICcrJywNCiAgICAgICAgICAgICdvYy1zdGF0dXMtaGlnaCc6ICchIScNCiAgICAgICAgfTsNCiAgICAgICAgZWxzLnN0YXR1c0ljb24udGV4dENvbnRlbnQgPSBpY29uc1tyLnN0YXR1c0NsYXNzXSB8fCAnLSc7DQoNCiAgICAgICAgZWxzLmVuZ2luZWVyaW5nUmVjb21tZW5kYXRpb24udGV4dENvbnRlbnQgPSByLnJlY29tbWVuZGF0aW9uOw0KICAgICAgICBzaG93V2FybmluZ3Moci53YXJuaW5ncyk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gc2hvd1dhcm5pbmdzKHdhcm5pbmdzKSB7DQogICAgICAgIGlmICghd2FybmluZ3MubGVuZ3RoKSB7DQogICAgICAgICAgICBlbHMud2FybmluZ3NCb3guc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBlbHMud2FybmluZ3NCb3guc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAgICAgIGVscy53YXJuaW5nc0xpc3QuaW5uZXJIVE1MID0gd2FybmluZ3MubWFwKHcgPT4gJzxsaT4nICsgdyArICc8L2xpPicpLmpvaW4oJycpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGNvbnZlcnRJbnB1dFZhbHVlcyhmcm9tU3lzdGVtLCB0b1N5c3RlbSkgew0KICAgICAgICBjb25zdCBsZW5ndGhGaWVsZHMgPSBbDQogICAgICAgICAgICAnb2MtY3Jvc3NTZWN0aW9uJywgJ29jLWdyb292ZURlcHRoJywgJ29jLWdyb292ZVdpZHRoJywNCiAgICAgICAgICAgICdvYy1yYWRpYWxDbGVhcmFuY2UnLCAnb2Mtb3JpbmdJRCcsICdvYy1ncm9vdmVEaWFtZXRlcicNCiAgICAgICAgXTsNCg0KICAgICAgICBsZW5ndGhGaWVsZHMuZm9yRWFjaChpZCA9PiB7DQogICAgICAgICAgICBjb25zdCBlbCA9ICQoaWQpOw0KICAgICAgICAgICAgY29uc3QgdmFsID0gcGFyc2VOdW0oZWwudmFsdWUpOw0KICAgICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCkgcmV0dXJuOw0KDQogICAgICAgICAgICBsZXQgbW0gPSBmcm9tU3lzdGVtID09PSAnbWV0cmljJyA\/IHZhbCA6IHZhbCAqIElOQ0hfVE9fTU07DQoNCiAgICAgICAgICAgIGlmICh0b1N5c3RlbSA9PT0gJ21ldHJpYycpIHsNCiAgICAgICAgICAgICAgICBlbC52YWx1ZSA9IHBhcnNlRmxvYXQobW0udG9GaXhlZCg0KSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGVsLnZhbHVlID0gcGFyc2VGbG9hdCgobW0gKiBNTV9UT19JTkNIKS50b0ZpeGVkKDUpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQoNCiAgICAgICAgY29uc3QgcHJlc3N1cmVWYWwgPSBwYXJzZU51bShlbHMucHJlc3N1cmUudmFsdWUpOw0KICAgICAgICBpZiAocHJlc3N1cmVWYWwgIT09IG51bGwpIHsNCiAgICAgICAgICAgIGxldCBtcGEgPSBmcm9tU3lzdGVtID09PSAnbWV0cmljJyA\/IHByZXNzdXJlVmFsIDogcHJlc3N1cmVWYWwgKiBQU0lfVE9fTVBBOw0KICAgICAgICAgICAgZWxzLnByZXNzdXJlLnZhbHVlID0gdG9TeXN0ZW0gPT09ICdtZXRyaWMnDQogICAgICAgICAgICAgICAgPyBwYXJzZUZsb2F0KG1wYS50b0ZpeGVkKDIpKQ0KICAgICAgICAgICAgICAgIDogcGFyc2VGbG9hdCgobXBhICogTVBBX1RPX1BTSSkudG9GaXhlZCgxKSk7DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdCB0ZW1wVmFsID0gcGFyc2VOdW0oZWxzLnRlbXBlcmF0dXJlLnZhbHVlKTsNCiAgICAgICAgaWYgKHRlbXBWYWwgIT09IG51bGwpIHsNCiAgICAgICAgICAgIGxldCBjZWxzaXVzID0gZnJvbVN5c3RlbSA9PT0gJ21ldHJpYycgPyB0ZW1wVmFsIDogKHRlbXBWYWwgLSAzMikgKiA1IC8gOTsNCiAgICAgICAgICAgIGVscy50ZW1wZXJhdHVyZS52YWx1ZSA9IHRvU3lzdGVtID09PSAnbWV0cmljJw0KICAgICAgICAgICAgICAgID8gcGFyc2VGbG9hdChjZWxzaXVzLnRvRml4ZWQoMSkpDQogICAgICAgICAgICAgICAgOiBwYXJzZUZsb2F0KChjZWxzaXVzICogOSAvIDUgKyAzMikudG9GaXhlZCgxKSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBmdW5jdGlvbiBzd2l0Y2hVbml0U3lzdGVtKG5ld1N5c3RlbSkgew0KICAgICAgICBpZiAobmV3U3lzdGVtID09PSB1bml0U3lzdGVtKSByZXR1cm47DQogICAgICAgIGNvbnZlcnRJbnB1dFZhbHVlcyh1bml0U3lzdGVtLCBuZXdTeXN0ZW0pOw0KICAgICAgICB1bml0U3lzdGVtID0gbmV3U3lzdGVtOw0KICAgICAgICB1cGRhdGVVbml0TGFiZWxzKCk7DQogICAgICAgIGhpZGVSZXN1bHRzKCk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gaW5pdCgpIHsNCiAgICAgICAgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFJPT1RfSUQpOw0KICAgICAgICBpZiAoIXJvb3QpIHJldHVybjsNCg0KICAgICAgICBiaW5kRWxlbWVudHMoKTsNCiAgICAgICAgdXBkYXRlVW5pdExhYmVscygpOw0KDQogICAgICAgIGVscy51bml0UmFkaW9zLmZvckVhY2gocmFkaW8gPT4gew0KICAgICAgICAgICAgcmFkaW8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gew0KICAgICAgICAgICAgICAgIGlmIChyYWRpby5jaGVja2VkKSBzd2l0Y2hVbml0U3lzdGVtKHJhZGlvLnZhbHVlKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCg0KICAgICAgICBlbHMuaGFyZG5lc3MuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gew0KICAgICAgICAgICAgZWxzLmN1c3RvbUhhcmRuZXNzR3JvdXAuY2xhc3NMaXN0LnRvZ2dsZSgnb2MtaGlkZGVuJywgZWxzLmhhcmRuZXNzLnZhbHVlICE9PSAnY3VzdG9tJyk7DQogICAgICAgIH0pOw0KDQogICAgICAgIGVscy5jYWxjdWxhdGVCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxjdWxhdGUpOw0KDQogICAgICAgIGNvbnN0IGlucHV0RmllbGRzID0gWw0KICAgICAgICAgICAgZWxzLmNyb3NzU2VjdGlvbiwgZWxzLmdyb292ZURlcHRoLCBlbHMuZ3Jvb3ZlV2lkdGgsDQogICAgICAgICAgICBlbHMucmFkaWFsQ2xlYXJhbmNlLCBlbHMub3JpbmdJRCwgZWxzLmdyb292ZURpYW1ldGVyLA0KICAgICAgICAgICAgZWxzLnNlYWxUeXBlLCBlbHMubWF0ZXJpYWwsIGVscy5oYXJkbmVzcywgZWxzLmN1c3RvbUhhcmRuZXNzLA0KICAgICAgICAgICAgZWxzLnByZXNzdXJlLCBlbHMudGVtcGVyYXR1cmUNCiAgICAgICAgXTsNCg0KICAgICAgICBpbnB1dEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHsNCiAgICAgICAgICAgIGZpZWxkLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgaGlkZVJlc3VsdHMpOw0KICAgICAgICAgICAgZmllbGQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgaGlkZVJlc3VsdHMpOw0KICAgICAgICB9KTsNCiAgICB9DQoNCiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7DQogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBpbml0KTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBpbml0KCk7DQogICAgfQ0KfSkoKTsNCg==');\n    (new Function(code))();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>The O-Ring Compression Ratio Calculator is a practical engineering tool designed to calculate O-ring squeeze and compression percentage based on seal cross-section and groove dimensions&#8230;.<\/p>","protected":false},"author":2,"featured_media":24738,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[8520],"tags":[8629,8628,8630,8631],"class_list":["post-24737","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mechanical-basic-component-design","tag-o-ring-calculator","tag-o-ring-compression","tag-o-ring-squeeze","tag-seal-design","pmpro-has-access"],"acf":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.mechstream.com\/wp-content\/uploads\/2026\/08\/O-Ring-Compression-Ratio-Calculator.png","_links":{"self":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/comments?post=24737"}],"version-history":[{"count":4,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24737\/revisions"}],"predecessor-version":[{"id":24742,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24737\/revisions\/24742"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/media\/24738"}],"wp:attachment":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/media?parent=24737"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/categories?post=24737"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/tags?post=24737"}],"curies":[{"name":"\u0648\u0648\u0631\u062f\u0628\u0631\u064a\u0633","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}